在发布此论坛之前,我已查看了此论坛上的所有主题。没有一个解决方案能够解决我的问题所以我被迫开了一个新线程。
我的代码中有以下include
,但是出现“无法打开流:HTTP请求失败!”错误。我已在php.ini
:
allow_url_include = On and
allow_url_fopen = On
但它仍然失败。
1.Below是/test/foo.php
中定义的包含,其中包含/test/bar.php
下同一服务器上的文件
<div class="tab-content" style=''>
<div class="tab-pane active" id="my1"><?php include('http://'. $_SERVER['SERVER_NAME'] . ':' .
$_SERVER['SERVER_PORT'] . "/bar.php?env=test1&days=3&start=$start&end=$end");?></div>
</div>
2.这是目录结构:
a)/test/foo.php - &gt;这包括我自己的服务器。 b)/test/bar.php
3.Apache文档根目录指向/test
,如
/var/www/html --> /test
4. echo __DIR__
向我显示“/ test”,因此它肯定指向正确的目录。
5.我已经完全允许这个目录,如果这是问题,但没有运气。
6.上述其中一个包含的apache错误日志中的确切错误。它不适用于上述任何内容。有意从日志下方删除服务器名称和端口。
[Sun Jul 07 15:01:47 2013] [错误] [客户] PHP警告:包括(http://:/ bar.php?env = my1&amp; days = 3&amp; start = 2013-06-07&amp; ; end = 2013-07-07):无法打开流:HTTP请求失败!在第36行的/test/foo.php中 [Sun Jul 07 15:01:47 2013] [错误] [客户端] PHP警告:include():无法打开'http://:/ bar.php?env = my1&amp; days = 3&amp; start = 2013-06 -07&amp; end = 2013-07-07'在第36行的/test/foo.php中包含(include_path ='。:/ usr / share / pear:/ usr / share / php')
答案 0 :(得分:0)
如果
include('http://'. $_SERVER['SERVER_NAME'] . ':'
. $_SERVER['SERVER_PORT']
. "/bar.php?env=test1&days=3&start=$start&end=$end");
正在尝试从
获取 http://:/bar.php?env=my1&days=3&start=2013-06-07&end=2013-07-07
这意味着$ _SERVER ['SERVER_NAME']和$ _SERVER ['SERVER_PORT']为空。你是从命令行运行吗?
(我假设您知道即使使用文字值,您在系统中创建了一个很大的安全漏洞,生成的脚本也会比直接包含文件的速度慢得多,即使填充了变量,它也不会意味着许多主机上的路由/ DNS将允许您以这种方式访问代码)