无法打开流错误:Http请求失败

时间:2013-07-08 18:16:54

标签: php

在发布此论坛之前,我已查看了此论坛上的所有主题。没有一个解决方案能够解决我的问题所以我被迫开了一个新线程。

我的代码中有以下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')

1 个答案:

答案 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将允许您以这种方式访问​​代码)