我在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?
我在网上搜索并试图解决它,但无法解决它。任何人都可以帮我解决这个问题,原因是什么?
答案 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
路径
它应该可以正常工作
答案 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”对我有用。