【问题标题】:Calling included remote functions and variables调用包含的远程函数和变量
【发布时间】:2013-07-29 07:14:50
【问题描述】:

我正在尝试使用includeallow_url_fopen = Onallow_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。

标签: php file include


【解决方案1】:

在您的浏览器中输入http://pc2/path/to/remote.php,看看您会得到什么。 PHP 完全一样。

如果pc2 的Web 服务器正在处理PHP 文件,您可能会在该文件中得到zilch,因为代码已被处理。您需要将另一台服务器配置为不处理 PHP 文件并提供其原始源代码。

总体而言,这不是一个好主意。

【讨论】:

  • remote.php 没有输出。它只是定义了一些函数和变量。它是根据我的踪迹执行的。如何配置以将其用作原始源代码。
  • 取决于您在那里运行的服务器。您需要将其配置为将 *.php 文件视为纯文本而不是 PHP 可执行文件。同样,由于这是一个坏主意,我不会教你如何做到这一点。
  • 从你的回答和cmets,我对这个问题有了一些了解。谢谢。
猜你喜欢
  • 2012-10-30
  • 2017-08-20
  • 2014-09-30
  • 1970-01-01
  • 1970-01-01
  • 2018-07-05
  • 2013-09-12
  • 2021-07-25
  • 2018-12-23
相关资源
最近更新 更多