为什么包含文件中的非全局变量在相对url中可用,而在包含php文件的完整url中不可用


How come non-globals from included files are usable in relative urls and unusable in full urls of included php files?

当我包括vars.hp:时

$var='hello';

在index.php中:

require 'vars.php';
echo $var;

即使$var不是全局性的,它也能很好地工作。但是当index.php看起来像这样时:

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

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

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

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

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

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

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

重要的是要理解,您的语句require 'vars.php';不是一个相对的URL,而是一个相对文件系统路径