Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么包含文件中的非全局变量在相对URL中可用,而在包含php文件的完整URL中不可用?_Php - Fatal编程技术网

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

为什么包含文件中的非全局变量在相对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代码。您无法

当我包括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代码。您无法让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';