梨通道更新pear.php.net后的SSL问题

mso*_*soa 4 php xampp pear pecl

我在Windows7上有XAMPP.更新pear.php.net频道后:

pear channel-update pear.php.net
Run Code Online (Sandbox Code Playgroud)

并尝试安装新的软件包,例如pecl install zmq遇到以下消息,无法安装任何软件包:

Connection to 'ssl://pecl.php.net:443' failed: Unable to find the socket 
transport "ssl" - did you forget to enable it when you configured PHP?
Run Code Online (Sandbox Code Playgroud)

我在网上搜索并试图解决它,但无法解决它.任何人都可以帮我解决这个问题,原因是什么?

chi*_*iya 13

最近我用Mac OS Sierra和XAMPP 7.0面对这个问题

我更新了pecl频道

sudo pecl channel-update pecl.php.net
Run Code Online (Sandbox Code Playgroud)

然后我就到了

连接到`ssl://pecl.php.net:443'失败:

我的解决方案如下

php -r "print_r(openssl_get_cert_locations());"

检查default_cert_file路径

然后从http://curl.haxx.se/ca/cacert.pem下载证书, 将其重命名并将其放在default_cert_file路径中

然后尝试pecl list-all

它应该工作正常

  • 对于 XAMPP 对于 XAMPP /Applications/XAMPP/xamppfiles/share/openssl 在此路径中我添加了文件 (2认同)
  • 我不确定提供的解决方案有多安全,无论如何,另一个(安全)解决方案是更新您的 OpenSSL,如果您在 mac 上使用 homebrew,您需要做的就是发出 `brew reinstall openssl`。 (2认同)

Lar*_*gon 5

在 Windows 上的 XAMPP 7.1 中, PECL 和 PEAR 的.bat文件可能是 SSL 无法工作的原因。如果 in place 命令php peclcmd.php list-all对您有用,那么这可能是因为您使用了正确的php.ini文件。只需-c "%PHP_PEAR_BIN_DIR%\php.ini".bat -file 命令中添加选项(您的php.ini可能位于另一个路径中)。它保持在:RUN部分。


小智 5

在我的 mac 中,根据 chintan 回复,我做到了:

/Applications/XAMPP/bin/php -r "print_r(openssl_get_cert_locations());"
Run Code Online (Sandbox Code Playgroud)

... 显示 default_cert_file

Array
(
    [default_cert_file] => /Applications/XAMPP/xamppfiles/share/openssl/cert.pem
    [default_cert_file_env] => SSL_CERT_FILE
    [default_cert_dir] => /Applications/XAMPP/xamppfiles/share/openssl/certs
    [default_cert_dir_env] => SSL_CERT_DIR
    [default_private_dir] => /Applications/XAMPP/xamppfiles/share/openssl/private
    [default_default_cert_area] => /Applications/XAMPP/xamppfiles/share/openssl
    [ini_cafile] => /Applications/XAMPP/xamppfiles/share/curl/curl-ca-bundle.crt
    [ini_capath] => 
)
Run Code Online (Sandbox Code Playgroud)

然后获取最新版本的 cacert.pem:

wget http://curl.haxx.se/ca/cacert.pem
Run Code Online (Sandbox Code Playgroud)

然后我将它移动到 default_cert_file 的正确位置:

sudo mv cacert.pem /Applications/XAMPP/xamppfiles/share/openssl/cert.pem
Run Code Online (Sandbox Code Playgroud)


cwe*_*ske 4

这是 PEAR 1.9.x 与 PHP 5.5+ 组合时发生的错误。

请升级到 PEAR 1.10.0dev1(或最新的 1.10.0dev2),它可以解决此问题。