【发布时间】:2013-07-29 07:14:50
【问题描述】:
我正在尝试使用include、allow_url_fopen = On 和allow_url_include = On 从一台 LAN 电脑中包含一个远程文件。
一台本地PC(比如说pc2),我有remote.php,其中包含:
<?php
echo $var_on_pc1; // this doesn't output
$remote_var = 'Var on pc2';
function square($num){
return $num * $num;
}
?>
在我的电脑(比如 pc1)中,我有 test.php,它由以下内容组成:
<?php
$var_on_pc1 = 'Var on pc1';
include "http://pc2/path/to/remote.php";
echo $remote_var; // this doesn't output
echo square(4); // this got error
?>
当我运行脚本 test.php 时,我得到了错误:
"致命错误:调用未定义函数:square() in path/to/test.php 在第 7 行。
发生了什么?我以为我可以调用包含的函数和变量,反之亦然?
如果我不能实现这一点,最好的方法是什么?
我没有安全问题,因为我在本地使用它进行临时开发。
【问题讨论】:
-
包含远程文件不是一个好主意。如果您需要远程功能,那么您可以在远程框上创建一个 Web 服务
-
我只需要像本地文件一样包含远程文件。
-
是的,我知道你想这样做。但这是一个安全和设计问题
-
如我所说,我没有安全问题。
-
这里更好的答案是一种强大的部署机制,它可以自动将该共享文件部署到所有服务器。查看 Ansible、Puppet 或 Chef。