为什么包含文件中的非全局变量在相对URL中可用,而在包含php文件的完整URL中不可用?
当我包括vars.php时:为什么包含文件中的非全局变量在相对URL中可用,而在包含php文件的完整URL中不可用?,php,Php,当我包括vars.php时: $var='hello'; 在index.php中: require 'vars.php'; echo $var; 它工作得很好,即使$var不是全局的。但当index.php如下所示时: require 'http://site.com/vars.php'; echo$var不起作用。我怎么才能让它工作呢?你不能要求'http://site.com/vars.php';尝试获取web服务器在site.com上呈现的PHP脚本的输出-它不再是PHP代码。您无法
$var='hello';
在index.php中:
require 'vars.php';
echo $var;
它工作得很好,即使$var不是全局的。但当index.php如下所示时:
require 'http://site.com/vars.php';
echo$var不起作用。我怎么才能让它工作呢?你不能<代码>要求'http://site.com/vars.php';尝试获取web服务器在site.com上呈现的PHP脚本的输出-它不再是PHP代码。您无法让web服务器以这种方式返回PHP源代码,您不应该尝试 你为什么要这样做?如果可能,最好在include中使用相对路径。这样,您就可以移动应用程序代码,或将其部署到其他服务器上,而无需编辑硬编码的路径名 无论如何,我认为这可能是您想要做的(使用绝对文件系统路径而不是相对路径): 在Linux上,此目录名通常为
/var/www
。在Windows上,路径将以驱动器号和冒号开头
重要的是要理解您的语句
需要'vars.php'
不是一个相对的URL,而是一个相对的文件系统路径。通过http访问该页面就像使用web浏览器访问该页面一样,php在到达Apache和web之前就已经被处理。当vars.php位于“c:\site\”中时,我应该用什么替换“/path/to/site.com/files/?(编写此路径不起作用)尝试require'c:/site/vars.php'代码>取而代之。我不使用Windows,但应该可以。(反斜杠在双引号字符串中有特殊含义。)
require '/path/to/site.com/files/vars.php';