SSL operation failed with code 1. OpenSSL Error messages: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed
•
LNMP
使用file_get_contents()、imagecreatefrompng错误信息如下:
file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
方案一:
$arrContextOptions=array( "ssl"=>array( "verify_peer"=>false, "verify_peer_name"=>false, ), ); $img = file_get_contents($img, false, stream_context_create($arrContextOptions));
方案二:
找到密钥文件的位置
php -r "print_r(openssl_get_cert_locations());"
返回内容如下:
Array ( [default_cert_file] => /usr/local/ssl/cert.pem [default_cert_file_env] => SSL_CERT_FILE [default_cert_dir] => /usr/local/ssl/certs [default_cert_dir_env] => SSL_CERT_DIR [default_private_dir] => /usr/local/ssl/private [default_default_cert_area] => /usr/local/ssl [ini_cafile] => [ini_capath] => )
- 如果 /usr/local/ssl/cert.pem 存在,修改php.ini,重启PHP
openssl.cafile=/usr/local/ssl/cert.pem
- 如果 /usr/local/ssl/cert.pem 不存在,查找服务器 cert.pem 的路径:
find / -name cert.pem
返回内容如下:
/etc/pki/tls/cert.pem
修改php.ini,重启PHP
openssl.cafile=/etc/pki/tls/cert.pem
如果服务器上根本没有这个pem文件,于是下载证书放进去,完美解决。