包括php的另一台服务器的php文件

Sol*_*ake 25 php file include

我有两个PHP文件位于不同的服务器上,一个在http://www.mysite.com/main.php,另一个在http://www.sample.com/includeThis.php.

我想要包含第一个文件.

第二个文件的内容如下所示:

<?php
$foo = "this is data from file one";
Run Code Online (Sandbox Code Playgroud)

第一个文件:

<?php
include "http://www.sample.com/includeThis.php";
echo $foo;
Run Code Online (Sandbox Code Playgroud)

有什么方法可以做到这一点吗?

Sar*_*raz 33

不,在大多数Web服务器(php.ini)中默认禁用/不允许此设置,因此include出于安全原因,您不能使用它来包含远程地址中的文件.

如果您仍希望允许包含远程文件,则allow_url_include必须On在php.ini中将该指令设置为

但从安全导向的观点来看,这也是一种不好的做法; 因此,它通常是禁用的(实际上我从来没有看到它启用)

如果你想读,虽然远程文件的内容,你可以使用file_get_contents函数而不是BUT这将返回为纯HTML标记代码,不会有任何服务器端代码.

  • 是的,您可以使用 `file_get_contents` 而不是 `file_put_contents` 将其存储在您的服务器上,然后在其上使用 `include`。尽管做 IMO 是一件危险和冒险的事情。但有可能。您甚至可以从中提取某些代码,并仅从文件中编写您需要的代码。 (2认同)

Pek*_*ica 5

在阅读了您的评论后 - 您声明您希望这样做是为了保护版权 - 我的回答是强调,忘记它。这不是复制保护的工作方式。

您唯一可以使用的include()从别处获取源代码以在本地解释器上进行解释。这很容易破解:恶意客户只需要echo()获取获取的代码即可。

远程执行远程脚本(在您的服务器上)对您没有帮助,因为该脚本的状态(变量、函数...)不会出现在您从中调用它的脚本中。

您拥有的选项是:

  • 编译/编码/混淆脚本,可能需要特定的 PHP 模块来执行它(SO 上有很多关于此的问题)

  • 创建在您的服务器上运行并执行请求的操作的真实 Web 服务(例如使用 SOAP)

不过,就其价值而言,我个人不购买,也不建议客户购买编码脚本和需要“打电话回家”才能工作的脚本。我相信通过严格的许可协议来保护您的产品(这会吓唬商业客户购买您的产品,因为被抓到偷窃的风险太高了。)