需要来自url时变量出错

时间:2016-02-05 23:17:11

标签: php

请注意;当需要或包括来自URl时,问题不在于require或include。(它在变量中) 我面临一个奇怪的错误如下:

Open

这导致变量错误

  

未定义的变量

虽然这个:

require_once "http://".$_SERVER['HTTP_HOST'].'/engine/header.php';

不会造成任何问题!

如果您拼错了任何内容或写下了不易理解的单词,请抱歉。

3 个答案:

答案 0 :(得分:1)

如果启用了URL包含包装器,则只能包含URL,因此请检查php配置中allow_url_include是否设置为true。

答案 1 :(得分:0)

您的答案位于here

  

如果在PHP中启用了“URL include wrappers”,则可以使用URL指定要包含的文件(通过HTTP或其他受支持的包装器 - 请参阅支持的协议和包装器以获取协议列表)而不是本地路径名。如果目标服务器将目标文件解释为PHP代码,则可以使用与HTTP GET一起使用的URL请求字符串将变量传递给包含的文件。严格来说,这与包含文件并使其继承父文件的变量范围完全相同;该脚本实际上正在远程服务器上运行,然后结果将包含在本地脚本中。

这意味着如果您包含URL,它将是您当前范围之外的独立PHP执行。您需要通过$_GET超全局传递变量。

如果include / require是绝对/相对文件路径,您将能够通过该范围访问变量。

答案 2 :(得分:0)

当您通过网络服务器访问.php文件时,网络服务器会执行该文件,而发送给客户端的响应是脚本的输出,而不是脚本的来源码。但是require期望从文件中读取PHP源代码,因此它可以在当前脚本的上下文中执行它。

因此,除非header.php采取特殊措施在远程访问PHP源代码时输出PHP源代码,否则尝试使用URI无法正常工作。