来自http://php.net/manual/en/function.include.php:
如果在PHP中启用了“URL include wrappers”,则可以使用URL指定要包含的文件。
所以你可以包含这样的文件:
<?php
include 'https://localhost:1234/index.php';
?>
如果您拥有有效的SSL证书,但是如果您使用自签名证书,则对等证书验证失败,这样可以正常工作:
Warning: include(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in [...]
这在旧版本中不是问题,但PHP 5.6默认启用对等验证(http://php.net/manual/en/migration56.openssl.php)。
显然,您可以使用stream_context_set_default()设置默认流上下文,您可以在其中禁用对等验证。所以我的代码看起来像这样:
<?php
stream_context_set_default(
array(
"ssl"=>array(
"verify_peer"=>false,
"verify_peer_name"=>false,
)
)
);
include 'https://localhost:1234/index.php';
?>
但这不起作用。 Include()函数仍尝试验证对等方并失败。如果我使用file_get_contents(),fopen(),copy(),readfile()或file()而不是include(),它可以正常工作。
现在我不确定这是PHP中的错误还是我在这里遗漏了什么。 require()也存在同样的问题。
有什么想法吗?