为什么来自包含文件的非全局变量可用于相对URL并且在包含的php文件的完整URL中不可用?

时间:2012-04-03 20:03:12

标签: php

当我包含vars.php时:

$var='hello';
index.php中的

require 'vars.php';
echo $var;

虽然$ var不是全局的,但效果很好。但当index.php看起来像这样:

require 'http://site.com/vars.php';

echo $ var不起作用。我怎么能让它工作呢?

1 个答案:

答案 0 :(得分:1)

你做不到。 require 'http://site.com/vars.php';尝试获取由site.com上的Web服务器呈现的PHP脚本输出 - 它不再是PHP代码。你不能让Web服务器以这种方式返回PHP源代码,你不应该尝试。

你为什么要这样做?在可能的情况下,最好在包含中使用相对路径。这样您就可以移动应用程序代码,或将其部署在不同的服务器上,而无需编辑硬编码的路径名。

无论如何,我认为这可能是你想做的事情(使用绝对文件系统路径而不是相对路径):

require '/path/to/site.com/files/vars.php';

在Linux上,此目录名通常为/var/www。在Windows上,路径将以驱动器号和冒号开头。

了解您的语句require 'vars.php';不是相对的 URL 非常重要 - 它是相对的文件系统路径