2012-07-20 25 views
1

当我使用它的完整URL(如include 'http://mysite.tld/mypage.php')包含页面时,我不能使用中的$GLOBALS,它返回Undefined index错误。

但是,当我把它给使用它的相对路径(如include 'mypage.php'),那么它的确定。

之所以我使用的URL,而不是相对路径是,我想包括$_GET参数mypage.php

是否有这种奇怪的行为,任何合理的解释?


请注意,这两个文件位于同一个目录中的同一台服务器上。

+0

我假定你的意思'$ _GLOBALS',不'$ GLOBALS' ... – 2012-07-20 01:47:24

+0

@JasonMcCreary号我的意思是[$ GLOBALS](http://php.net/manual/en/reserved.variables.globals。 PHP)。 '$ GLOBALS'是美元符号后并没有强调只有[超全局(http://www.php.net/manual/en/language.variables.superglobals.php)变量。 – Pixel 2012-07-20 01:48:16

+1

我站好了。显示我是多么使用它...从来没有 - 不好的形式和或暗示的:) – 2012-07-20 01:51:58

回答

1

包括与URL文件意味着代码运行作为一个单独的过程,这意味着它以不同的可变范围内运行。这与通过相对路径包含文件相反,在这种情况下,它非常相当于将代码剪切并粘贴到脚本中。

从本质上讲,这意味着只能从您的出发脚本变量是那些你明确地传递(如你在这种情况下使用$_GET变量)。这包括$_SESSION变量,因为调用者是您自己的服务器而不是客户端。

此行为在PHP手册的include页指出:

如果目标服务器解释的目标文件作为PHP代码, 可以使用URL请求字符串传递给所包含的文件所用 变量与HTTP GET。这不是严格意义上讲同样的事情 包括文件并继承父文件的变量 范围;该脚本实际上正在远程服务器上运行,并且 结果将被包含到本地脚本中。