编辑 我现在正在移动中,只有在我的iPhone上使用Stack Exchange应用程序的SO,所以下面的代码引用格式有些奇怪-抱歉!实际代码中有真正的引号 :)
我已经尝试了两天,结合其他一些关于SO的问题,但是还是不行...
只是尝试使用file_get_contents()
来捕获位于同一服务器和同一域上的另一个文件的网页,并将其包含在内。我使用MAMP进行生产,使用自签名证书(以便我可以让服务器强制使用SSL等),因此有这个问题,我也将该证书作为“始终可信”本地存在于我的Mac上,因为它显然是自签名的。
所以现在我有一个问题,我想要一个页面来捕获另一个页面的内容...我最初尝试使用cURL,但没有给我任何异常,也没有使用curl_error()
获取任何信息,所以我切换到file_get_contents()
,在那里我得到了异常SSL operation failed with code 1
... ssl3_get_server_certificate:certificate verify failed
我认为这是OpenSSL不信任自签名证书的问题(但我以为它使用底层操作系统的可信CA?),我无法使用以下流上下文使其正常工作:
stream_context_create([
"ssl" => [
"allow_self_signed" => true
]
]);
如果我将verify_peer和verify_peer_name设置为false,请求会被发送,但HTTPS cookie不会被发送,导致无法连接。我尝试将证书的实际文本添加到MAMP中OpenSSL目录下的cacert.pem文件中,并将该文件设置为php.ini文件中openssl.cafile选项,如另一个答案所述,但仍然没有成功...有什么建议吗?非常感谢您的帮助!☺️
编辑2:我再次尝试使用cURL,并且这次让cURL将一些详细输出保存到文件中,这是它给我的输出(请注意,从底部往上数第三行):
* Trying ::1...
* TCP_NODELAY set
* Connected to admin.voyagerisc (::1) port 8890 (#0)
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
* CAfile: /Applications/MAMP/Library/OpenSSL/certs/cacert.pem CApath: none
* SSL certificate problem: unable to get local issuer certificate
* Curl_http_done: called premature == 1
* Closing connection 0
...这是我将原始证书添加到顶部的文件... 呜呜,卡住了!