pear 频道更新 pear.php.net 后的 SSL 问题
我在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?
我在网上搜索并试图解决这个问题,但无法解决。有谁能帮助我解决这个问题,原因是什么?
php -m
- cweiske 2015-08-06
openssl
和其他。写那些包名?所以我在下一篇文章中发表了评论,现在问题在pecl search package_name
!!!
- msoa 2015-08-06
最近,我在使用XAMPP 7.0的macOS Sierra系统时遇到了这个问题。
我更新了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来试试
它应该可以正常工作
brew reinstall openssl
。
- Ahmad 2019-09-29
apache
服务,就像我需要做的那样。
- Abdul Rahman Kayali 2020-08-11
在我的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
在Windows的XAMPP 7.1中,PECL和PEAR的.bat文件可能是SSL不工作的原因。如果php peclcmd.php list-all
命令对你有效,那么这可能是因为你使用了正确的php.ini文件。只要在.bat-file命令中添加选项-c "%PHP_PEAR_BIN_DIR%\php.ini"
(你的php.ini可能在另一个路径中)。它应该在:RUN
部分。
这是一个发生在PEAR 1.9.x和PHP 5.5以上版本的组合中的错误。
请升级到PEAR 1.10.0dev1(或最新的1.10.0dev2),它修复了这个问题。
pear version
: PEAR Version: 1.10.0dev2 - PHP Version: 5.5.19
- msoa 2015-08-06
pecl install package_name
可以工作,但当搜索包pecl search package_name
时,我得到了错误: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?
!!!!!!!!!
- msoa 2015-08-06
对我来说,在Windows 10的%PHP_PEAR_BIN_DIR%\pecl.bat
中,从"%PHP_PEAR_PHP_BIN%" -C -n -d
开始的那一行;去掉"-n"对我来说是有效的。
然而,当我执行php -r "print_r(openssl_get_cert_locations());"时,我也得到了两个额外的路径:
[ini_cafile] => /usr/local/etc/openssl@1.1/cert.pem
[ini_capath] => /usr/local/etc/openssl@1.1/certs
我不得不(sudo)创建ini_cafile目录,然后将http://curl.haxx.se/ca/cacert.pem文件复制进去,将其重命名为cert.pem。然后我更新了该目录和内容的权限。
似乎在我的OSX安装中,使用的是[ini_cafile],而不是[default_cert_file]。
在那之后,Pecl又开始工作了。