3

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

<?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=On 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() 获取文件。

4

2 回答 2

5

这可以通过设置allow_url_includeonphp.ini 来完成。

但是,正如评论中提到的,这会打开一个

巨大的

应用程序上的安全漏洞。

于 2012-02-29T12:13:39.763 回答
0

Require_Once 应该只用于本地文件。如果要获取远程文件,请使用 file_get_contents。请记住,如果您尝试从这样的远程服务器中包含 php,那将是非常不安全的,否则 php 将在远程服务器上执行。

于 2012-02-29T12:12:00.247 回答