FreeBSD php5.6 https fsockopen错误

php升级到5.6后,fsockpen('ssl://www.baidu.com', 443, $errno, $errstr, 10);
爆出:

PHP Warning:  fsockopen(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate 

获取 php加载的 openssl.pem文件路径:

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

Array
(
    [default_cert_file] => /usr/local/openssl/cert.pem
    [default_cert_file_env] => SSL_CERT_FILE
    [default_cert_dir] => /usr/local/openssl/certs
    [default_cert_dir_env] => SSL_CERT_DIR
    [default_private_dir] => /usr/local/openssl/private
    [default_default_cert_area] => /usr/local/openssl
    [ini_cafile] => 
    [ini_capath] => 
)

ls /usr/local/openssl/cert.pem


根本没有这个文件,

做个软连接:

ln -s /usr/local/share/certs/ca-root-nss.crt /usr/local/openssl/cert.pem

OK.

你可能感兴趣的:(FreeBSD php5.6 https fsockopen错误)