无法在远程服务器上包含文件

时间:2012-02-29 12:07:20

标签: php linux require remote-file-inclusion

我的问题是我无法在远程服务器上包含文件。

<?php
  echo "Including\n";
  require_once("http://xx.xxx.xxx.xx:8080/path/to/myfile.inc");
  echo "Done..\n";
?>

脚本在require_once函数处失败。 我正在运行脚本:php -d allow_url_include =在script.php上 但要确保我在php.ini中将allow_url_include和allow_url_fopen设置为On

如果我将http://xx.xxx.xxx.xx:8080/path/to/myfile.inc复制到浏览器,我就会提供该文件。 我还试图包含其他远程文件(在标准端口80上),但仍然没有运气

我真的很困惑的是,一切都可以在我办公室的本地计算机上运行(mac,ubuntu),但不能从我们的服务器运行。我在2个不同的服务器上测试了它,虚拟和专用。 我可以使用fopen()获取文件。

2 个答案:

答案 0 :(得分:4)

这可以通过在php.ini上设置allow_url_includeon来完成。

但是,如评论中所述,这会打开一个

巨大

应用程序上的安全漏洞。

答案 1 :(得分:0)

Require_Once应仅用于本地文件。如果要获取远程文件,请使用file_get_contents。请记住,如果你试图从这样的远程服务器中包含php,它将非常不安全,或者php将在远程服务器上执行。