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

时间:2015-08-05 20:39:47

标签: php xampp pear pecl

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

pear channel-update pear.php.net

并尝试安装新的软件包,例如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?

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

5 个答案:

答案 0 :(得分:7)

最近我遇到了macOS Sierra和XAMPP 7.0的问题

我更新了pecl频道

sudo pecl channel-update pecl.php.net

然后我得到了

与`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

它应该可以正常工作

答案 1 :(得分:3)

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

请升级到PEAR 1.10.0dev1(或最新的1.10.0dev2)which fixes此问题。

答案 2 :(得分:2)

在Windows上的XAMPP 7.1 .bat - PECL和PEAR的文件可能是SSL不起作用的原因。如果就位命令-c "%PHP_PEAR_BIN_DIR%\php.ini"适用于您,那么这可能是因为您使用了正确的 php.ini 文件。只需在 .bat -file命令中添加选项:RUN(您的 php.ini 可能位于其他路径中)。它位于fragment部分。

答案 3 :(得分:1)

在我的Mac中,基于chintan回复,我做到了:

/Applications/XAMPP/bin/php -r "print_r(openssl_get_cert_locations());"

...以显示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] => 
)

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

wget http://curl.haxx.se/ca/cacert.pem

然后将其移至default_cert_file的正确位置:

sudo mv cacert.pem /Applications/XAMPP/xamppfiles/share/openssl/cert.pem

答案 4 :(得分:0)

在Windows 10 %PHP_PEAR_BIN_DIR%\pecl.bat中,对于我来说,该行以"%PHP_PEAR_PHP_BIN%" -C -n -d开头;删除“ -n”对我有用。