PHP OpenSSL 未定义常数 OPENSSL_ALGO_DSS1
PHP OpenSSL undefined constant OPENSSL_ALGO_DSS1
我是 运行 PHP 5.2.13 Windows Server 2008 R2 机器(Windows 7 等效)。
我写这篇文章主要是因为我在搜索警告时收到 google dead end,我正在尝试为其添加一些内容。
我收到以下通知/警告:
Use of undefined constant OPENSSL_ALGO_DSS1 - assumed 'OPENSSL_ALGO_DSS1'
openssl_verify() expects parameter 4 to be long, string given
当运行这行代码:
return openssl_verify($data, $signature, $this->getPublicKey(), OPENSSL_ALGO_DSS1);
显然第二个警告是由第一个引起的。
但是问题不在于未加载 OpenSSL 库,因为我从 phpinfo
得到以下输出:
OpenSSL support enabled
OpenSSL Version OpenSSL 0.9.8k 25 Mar 2009
这在所有其他机器上运行,它已经过测试,所以有一些特定于机器的东西。
我发现的唯一区别是来自 phpinfo 的以下内容:
Registered Stream Socket Transports tcp, udp
与它正在工作的机器上的对比:
Registered Stream Socket Transports tcp, udp, ssl, sslv3, sslv2, tls
但我不确定这是否是一条红鲱鱼。
我的解决方案是完全卸载 PHP 和 运行 php-5.2.13-nts-x86.msi
安装程序并通过那里安装 OpenSSL 库。
我已经完成了 OpenSSL 库的手动安装,而不是使用 Windows 安装程序。
我现在 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 there shouldn't be a requirement to have to install using the installer. On other machines I haven't had this problem. Altering the 'Registered Stream Socket Transports' to include ssl should only require installing the open_ssl library and adding a line to the php.ini
file e.g. this answer。
我是 运行 PHP 5.2.13 Windows Server 2008 R2 机器(Windows 7 等效)。
我写这篇文章主要是因为我在搜索警告时收到 google dead end,我正在尝试为其添加一些内容。
我收到以下通知/警告:
Use of undefined constant OPENSSL_ALGO_DSS1 - assumed 'OPENSSL_ALGO_DSS1'
openssl_verify() expects parameter 4 to be long, string given
当运行这行代码:
return openssl_verify($data, $signature, $this->getPublicKey(), OPENSSL_ALGO_DSS1);
显然第二个警告是由第一个引起的。
但是问题不在于未加载 OpenSSL 库,因为我从 phpinfo
得到以下输出:
OpenSSL support enabled
OpenSSL Version OpenSSL 0.9.8k 25 Mar 2009
这在所有其他机器上运行,它已经过测试,所以有一些特定于机器的东西。
我发现的唯一区别是来自 phpinfo 的以下内容:
Registered Stream Socket Transports tcp, udp
与它正在工作的机器上的对比:
Registered Stream Socket Transports tcp, udp, ssl, sslv3, sslv2, tls
但我不确定这是否是一条红鲱鱼。
我的解决方案是完全卸载 PHP 和 运行 php-5.2.13-nts-x86.msi
安装程序并通过那里安装 OpenSSL 库。
我已经完成了 OpenSSL 库的手动安装,而不是使用 Windows 安装程序。
我现在 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 there shouldn't be a requirement to have to install using the installer. On other machines I haven't had this problem. Altering the 'Registered Stream Socket Transports' to include ssl should only require installing the open_ssl library and adding a line to the php.ini
file e.g. this answer。