2016-12-20 5 views
1

Windows Server 2008 R2マシン(Windows 7相当)でPHP 5.2.13を実行しています。PHP OpenSSL undefined定数OPENSSL_ALGO_DSS1

警告を検索するときにgoogle dead endが表示されたので、私はほとんどこれを書いています。私は何かを追加しようとしています。

私は次の注意/警告取得しています:未定義の定数OPENSSL_ALGO_DSS1の

使用 - 'OPENSSL_ALGO_DSS1'

openssl_verify()は、パラメータ4が長いことを期待仮定を、文字列が

を与えられました

このコード行を実行する場合:

return openssl_verify($data, $signature, $this->getPublicKey(), OPENSSL_ALGO_DSS1); 明らかに第2の警告は、第1の警告によって引き起こされることは明らかである。

問題は、私はphpinfoからの次の出力を持っているとして、OpenSSLライブラリは、ロードされていないということではありませんが:

OpenSSL support  enabled 
OpenSSL Version  OpenSSL 0.9.8k 25 Mar 2009 

これは、そう、それがテストされている他のすべてのマシンに取り組んでいますマシン固有のものがあります。

私が発見した唯一の違いは、のphpinfoから次のようである:それは働いているマシン上で

Registered Stream Socket Transports  tcp, udp 

VS:

Registered Stream Socket Transports  tcp, udp, ssl, sslv3, sslv2, tls 

しかし、それは赤いニシンだ場合、私はわかりませんかない。

+0

openssl_verfiy()の**公開鍵**をどう取得するのですか? –

+0

私はあなたがすでにこれを訪れていると確信していますが、まだ別のタイプで見て、デバッグしようとしています:http://php.net/manual/en/function.openssl-verify.php –

+0

@SoniVimalは、私が使用しているDSA公開鍵。だから私はファイルの内容の文字列を渡しています。しかし、それはopen_sslライブラリがライブラリの一部である定数 'OPENSSL_ALGO_DSS1'を認識しないという事実とはあまり関係ありません。 – icc97

答えて

0

この問題の解決方法は、PHPを完全にアンインストールしてphp-5.2.13-nts-x86.msiインストーラを実行し、そこにOpenSSLライブラリをインストールすることでした。

Windowsインストーラを使用するのではなく、OpenSSLライブラリを手動でインストールしました。

私は今phpinfoに次のように持っているか:

Registered PHP Streams php, file, data, http, ftp, compress.zlib, https, ftps 
Registered Stream Socket Transports  tcp, udp, ssl, sslv3, sslv2, tls 

私の知る限りopenssl installation documentationに応じてインストーラを使用してインストールする必要がありますする必要があってはならないにも言うことができるように。他のマシンでは私はこの問題を抱えていませんでした。 sslを含めるために 'Registered Stream Socket Transports'を変更するには、open_sslライブラリをインストールし、php.iniファイルに行を追加する必要があります。 this answer

+1

とにかくPHPを再インストールする場合は、新しいバージョンをインストールしないでください。 PHP 5.2は何年も維持されておらず、セキュリティが必要なものについては信頼できません。 – GordonM

+0

@GordonM Damn fine point。しかし、使用しているソフトウェアはPHP 5.2で完全にテストされており、バージョンを切り替えるにはシステムの完全再テストが必要です。 – icc97