我的pecl使用不了报连接失败?

如下:

Connection to `ssl://pecl.php.net:443' failed:

telnet pecl.php.net 443 能连接上的。
网上说使用:

php -r "print_r(openssl_get_cert_locations());"

打印结果是:

Array
(
    [default_cert_file] => /etc/pki/tls/cert.pem
    [default_cert_file_env] => SSL_CERT_FILE
    [default_cert_dir] => /etc/pki/tls/certs
    [default_cert_dir_env] => SSL_CERT_DIR
    [default_private_dir] => /etc/pki/tls/private
    [default_default_cert_area] => /etc/pki/tls
    [ini_cafile] => 
    [ini_capath] => 
)

我的是有pem文件的,是什么问题?如何解决,环境是CENTOS7.0

阅读 6.3k
2 个回答

就喜欢折腾,捣鼓。
这个问题我在网上看到的很多解释方案都不行,大部分都是说用 openssl_get_cert_locations 打印SSL证书路径。然后检查证书是否存在,不存在就去官方下载一个。
然并我的并没有这么简单。
我的证书目录下有个openssl.conf 文件,打开一看,里面有好多处证书文件的路径拼接。一看很明显有不对的地方:

dir        = /etc/pki/CA        # Where everything is kept
certs        = $dir/certs        # Where the issued certs are kept
crl_dir        = $dir/crl        # Where the issued crl are kept
database    = $dir/index.txt    # database index file.
#unique_subject    = no            # Set to 'no' to allow creation of
                    # several ctificates with same subject.
new_certs_dir    = $dir/newcerts        # default place for new certs.

certificate    = $dir/cacert.pem     # The CA certificate
serial        = $dir/serial         # The current serial number
crlnumber    = $dir/crlnumber    # the current crl number
                    # must be commented out to leave a V1 CRL
crl        = $dir/crl.pem         # The current CRL
private_key    = $dir/private/cakey.pem# The private key
RANDFILE    = $dir/private/.rand    # private random number file

检查上面几个文件路径是否有效,改完保存。

然后试下:
pecl search swoole
成功!!!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题