我有两个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标记代码,不会有任何服务器端代码.
在阅读了您的评论后 - 您声明您希望这样做是为了保护版权 - 我的回答是强调,忘记它。这不是复制保护的工作方式。
您唯一可以使用的include()
是从别处获取源代码以在本地解释器上进行解释。这很容易破解:恶意客户只需要echo()
获取获取的代码即可。
远程执行远程脚本(在您的服务器上)对您没有帮助,因为该脚本的状态(变量、函数...)不会出现在您从中调用它的脚本中。
您拥有的选项是:
编译/编码/混淆脚本,可能需要特定的 PHP 模块来执行它(SO 上有很多关于此的问题)
创建在您的服务器上运行并执行请求的操作的真实 Web 服务(例如使用 SOAP)
不过,就其价值而言,我个人不购买,也不建议客户购买编码脚本和需要“打电话回家”才能工作的脚本。我相信通过严格的许可协议来保护您的产品(这会吓唬商业客户购买您的产品,因为被抓到偷窃的风险太高了。)
归档时间: |
|
查看次数: |
52975 次 |
最近记录: |