今天發(fā)生了一件很奇怪的事情,原來(lái)file_get_contents()能正常使用夫壁,今天不知道怎么回事使用它居然報(bào)錯(cuò)了。
錯(cuò)誤信息如下
file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
于是從網(wǎng)上找解決的辦法
方案一:
$arrContextOptions=array(
"ssl"=>array(
"verify_peer"=>false,
"verify_peer_name"=>false,
),
);
$img = file_get_contents($img, false, stream_context_create($arrContextOptions));
方案二:
修改服務(wù)器的配置
找到密鑰文件的位置
var_dump(openssl_get_cert_locations());
返回內(nèi)容如下
array(8) {
["default_cert_file"]=>
string(31) "/usr/local/openssl/xxx/cert.pem"
["default_cert_file_env"]=>
string(13) "SSL_CERT_FILE"
["default_cert_dir"]=>
string(28) "/usr/local/openssl/xxx/certs"
["default_cert_dir_env"]=>
string(12) "SSL_CERT_DIR"
["default_private_dir"]=>
string(30) "/usr/local/openssl/xxx/private"
["default_default_cert_area"]=>
string(22) "/usr/local/openssl/xxx"
["ini_cafile"]=>
string(0) ""
["ini_capath"]=>
string(0) ""
}
修改php.ini
openssl.cafile=/usr/local/openssl/xxx/cert.pem
重啟php
結(jié)果還是報(bào)錯(cuò),結(jié)果發(fā)現(xiàn)服務(wù)器上根本沒(méi)有這個(gè)pem文件油坝,于是下載證書(shū)放進(jìn)去,完美解決刨裆。
證書(shū)地址http://curl.haxx.se/ca/cacert.pem
如果自己的權(quán)限足夠澈圈,不了解數(shù)據(jù)并且對(duì)安全有要求的,方案二是很安全的帆啃。
如果自己權(quán)限不足瞬女,但是確定數(shù)據(jù)的可靠性,方案一是很快的努潘。