📅  最后修改于: 2023-12-03 15:24:41.388000             🧑  作者: Mango
在PHP中,file_get_contents()
函数是常用于从URL或文件中读取数据的函数,但有时可能会收到警告,例如:
Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
这是因为PHP默认情况下会验证SSL证书,而有些证书可能无法通过验证。以下是处理该警告的一些选项:
如果您确定您的数据源是安全可靠的,可以通过禁用SSL验证来解决此问题。这是最简单的解决方法,但也可能不安全。以下是如何禁用SSL验证:
$options = [
"ssl" => [
"verify_peer" => false,
"verify_peer_name" => false,
],
];
$content = file_get_contents($url, false, stream_context_create($options));
这将通过将$options
参数传递给stream_context_create()
来禁用SSL验证。
如果您的数据源是安全可靠的,并且您希望更加保险,请更新您的SSL证书。您可以使用cURL命令或OpenSSL来更新证书。以下是更新证书的步骤:
$ curl https://curl.se/ca/cacert.pem -o /etc/pki/tls/certs/ca-bundle.crt
此命令将使用cURL下载并安装最新的CA证书。
$ openssl s_client -showcerts -connect google.com:443 </dev/null 2>/dev/null|openssl x509 -outform PEM >mycertfile.pem
此命令将下载并安装Google的证书。您可以替换google.com
和443
为您需要的网站和端口。
最后,您还应该检查您的数据源是否可靠,并确认您正在连接到正确的服务器。有些警告可能是由于欺诈或中间人攻击而产生的。
通过采取以上措施,您应该能够解决大多数file_get_contents()
函数的问题,并获得干净的数据。