Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Can';不包括远程服务器上的文件_Php_Linux_Require_Remote File Inclusion - Fatal编程技术网

Php Can';不包括远程服务器上的文件

Php Can';不包括远程服务器上的文件,php,linux,require,remote-file-inclusion,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\u url\u include=On script.php运行脚本 但为了确保我在php.ini中将allow_url_include和al

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

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

脚本在require_once函数中失败。 我使用:php-d allow\u url\u include=On script.php运行脚本 但为了确保我在php.ini中将allow_url_include和allow_url_fopen设置为On

如果我复制到浏览器,我就收到了文件。 我也尝试过包含其他远程文件(在标准端口80上),但仍然没有成功

我真正感到困惑的是,一切都是从我办公室的本地计算机(mac、ubuntu)上运行的,而不是从我们的服务器上运行的。我已经在两个不同的服务器上测试了它,一个虚拟服务器和一个专用服务器。
我可以用fopen()获取文件。

Require\u一次只能用于本地文件。如果要获取远程文件,请使用文件获取内容。请记住,如果您试图从远程服务器包含这样的php,这将是非常不安全的,或者php将在远程服务器上执行。

这可以通过在php.ini上将
allow\u url\u include
设置为
on
来完成

<?php
  echo "Including\n";
  require_once("http://xx.xxx.xxx.xx:8080/path/to/myfile.inc");
  echo "Done..\n";
?>
但是,正如评论中提到的,这打开了一个

巨大的
应用程序上存在安全漏洞。

您通常不希望包含远程文件。如果他们输出任何PHP代码,它将在您的系统上执行!而且速度非常非常慢。我知道安全方面的事情。我对这两台服务器都有完全控制权,可以通过文件限制对服务器的访问。实际上,所有的服务器都在同一个网络上,所以我希望它不会太慢,但我要测试一下。只是好奇为什么它能在某些机器上工作而不能在其他机器上工作?即使你能控制两台服务器,它也是不安全的。您可以使用ssl(甚至更慢)或确保没有其他计算机可以访问网络,并确保任何DNS查找的完整性。我在这里询问过()。从文档中,它说我应该可以使用require_一次:并且如果您阅读文档,它也可以在我的本地计算机上运行:此外,可以使用URL。。。由于PHP5.2.0,必须启用这些API,但如果您绝对必须包含来自远程服务器的内容,请考虑添加额外的身份验证和缓存!谢谢。我知道这是不安全的,我可以在远程服务器上包含文件,但问题是为什么它在某些机器上不起作用。Starx:正如我在帖子中所写的,我确实设置了allow_url_include,假设您可以使用类似stunnel()的东西来保护服务器之间的通信。。。。