pear 通道更新 pear.php.net 后出现 SSL 问题

问题描述 投票:0回答:6

我在 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 xampp pear pecl
6个回答
27
投票

最近我在使用 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 全部列出

应该可以正常工作


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

5
投票

在 Windows 上的 XAMPP 7.1 中 .bat - PECL 和 PEAR 文件可能是 SSL 无法工作的原因。如果就位命令

php peclcmd.php list-all
对您有用,那么这可能是因为您使用了正确的 php.ini 文件。只需将选项
-c "%PHP_PEAR_BIN_DIR%\php.ini"
添加到 .bat 文件命令中(您的 php.ini 可能位于另一个路径中)。它保留在
:RUN
部分。


4
投票

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

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


3
投票

对于我在 Windows 10 中的

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


2
投票

在我的 OSX 12.4 2021 m1 MacbookPro 上,上述方法均不适用于我。 但是,当我执行 php -r "print_r(openssl_get_cert_locations());" 时,我还得到了两个额外的路径:

[ini_cafile] => /usr/local/etc/[email protected]/cert.pem
[ini_capath] => /usr/local/etc/[email protected]/certs

我必须 (sudo) 创建 ini_cafile 目录,然后复制到 http://curl.haxx.se/ca/cacert.pem 文件,将其重命名为 cert.pem。然后我更新了目录和内容的权限。

似乎在我的 OSX 安装中,使用了 [ini_cafile],而不是 [default_cert_file]。

此后,pecl 再次工作。

© www.soinside.com 2019 - 2024. All rights reserved.