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

2022-08-30 14:17:34

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

我想包括第一个文件中的第二个文件。

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

<?php
$foo = "this is data from file one";

第一个文件:

<?php
include "http://www.sample.com/includeThis.php";
echo $foo;

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


答案 1

否,默认情况下,大多数 Web 服务器 (php.ini) 中都禁用/不允许此设置,因此出于安全原因,您无法使用 来包含来自远程地址的文件。include

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

但是,从安全的角度来看,这又是一种不好的做法 ;因此,它通常是禁用的(实际上,我从未见过它启用)

如果你想读取远程文件的内容,你可以使用file_get_contents函数代替,但这将作为纯HTML标记代码返回,不会有任何服务器端代码。


答案 2

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

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

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

您拥有的选项包括:

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

  • 创建一个真正的Web服务(例如,使用SOAP),该服务在服务器上运行并执行请求的操作

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


推荐