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

回答 6 浏览 2.2万 2015-08-05

我在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?

我在网上搜索并试图解决这个问题,但无法解决。有谁能帮助我解决这个问题,原因是什么?

msoa 提问于2015-08-05
你安装了哪些php模块?php -mcweiske 2015-08-06
@cweiske openssl 和其他。写那些包名?所以我在下一篇文章中发表了评论,现在问题在pecl search package_name !!!msoa 2015-08-06
@cweiske openssl对我来说是不需要的,但我甚至禁用了openssl,但没有效果。msoa 2015-08-06
6 个回答
#1楼
得票数 26

最近,我在使用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来试试

它应该可以正常工作

chintan adatiya 提问于2017-10-03
对于XAMPP 对于XAMPP /Applications/XAMPP/xamppfiles/share/openssl,在这个路径上,我添加了文件Abhishek 2018-01-12
我不确定所提供的解决方案有多安全,总之,另一个(安全的)解决方案是更新你的OpenSSL,如果你在mac上使用自制软件,你所需要做的就是发出brew reinstall opensslAhmad 2019-09-29
OMG,谢谢你!!!这在我的Ubuntu 16.04安装上起作用了!这在我安装的Ubuntu 16.04上起作用了。我已经升级了我的openSSL,并获得了新的证书,但没有任何效果!我想这是一个很好的解决方案!真棒的解决方案 :)Michael Fever 2019-10-18
在应用上述解决方案后,你可能需要重新启动apache服务,就像我需要做的那样。Abdul Rahman Kayali 2020-08-11
#2楼
得票数 8

在我的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
lynx_74 提问于2018-06-27
#3楼
得票数 5

在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部分。

Laraan Dragon 提问于2018-04-03
Laraan Dragon 修改于2018-04-03
给其他人的提示:为了使捆绑在php 8.0.11上的pecl能在windows下工作,仍然需要这个。sigh 谢谢你的修正!Arnie Schraufenziger 2021-10-19
#4楼
得票数 4

这是一个发生在PEAR 1.9.x和PHP 5.5以上版本的组合中的错误。

请升级到PEAR 1.10.0dev1(或最新的1.10.0dev2),它修复了这个问题。

cweiske 提问于2015-08-06
我把它升级到PEAR 1.10.0dev2,并重新启动apache,但问题仍然存在。pear version : PEAR Version: 1.10.0dev2 - PHP Version: 5.5.19msoa 2015-08-06
重新启动windows后,我注意到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
#5楼
得票数 3

对我来说,在Windows 10的%PHP_PEAR_BIN_DIR%\pecl.bat中,从"%PHP_PEAR_PHP_BIN%" -C -n -d开始的那一行;去掉"-n"对我来说是有效的。

Reado 提问于2020-11-30
#6楼
得票数 1

然而,当我执行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又开始工作了。

jmux 提问于2022-07-22
标签