Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.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
不同服务器之间的PHP include语句不同_Php_Path_Include_Include Path - Fatal编程技术网

不同服务器之间的PHP include语句不同

不同服务器之间的PHP include语句不同,php,path,include,include-path,Php,Path,Include,Include Path,在win2008/IIS7服务器上工作时,此php include语句有效: include('/path/file.php'); 转到共享Linux CPanel服务器,情况并非如此。我必须这样做: include('path/file.php'); 当我第一次编写代码时,我的印象是,打开/意味着从访问初始文件的根文件夹开始。这是可以在.ini文件中设置的内容吗?它是特定于PHP版本的?该目录将与执行include或require调用的*.PHP文件相关 在上面的例子中,对于“path/f

在win2008/IIS7服务器上工作时,此php include语句有效:

include('/path/file.php');
转到共享Linux CPanel服务器,情况并非如此。我必须这样做:

include('path/file.php');

当我第一次编写代码时,我的印象是,打开
/
意味着从访问初始文件的根文件夹开始。这是可以在.ini文件中设置的内容吗?它是特定于PHP版本的?

该目录将与执行include或require调用的*.PHP文件相关


在上面的例子中,对于“path/file.php”。我假设包含“path/file.php”的文件(比如index.php)应该与“path”位于同一目录下。

IIS中的第一个
/
指的是域/localhost的根文件夹。例如,您可以使用浏览器访问页面,如下所示:
http://localhost/path/file.php

第二种形式,没有
/
,意味着URL与包含file.php的页面文件夹相对。转到子文件夹路径并在那里找到文件


我相信不同机器之间的文件夹结构是不同的:在unix机器上,它部署在:
http://www.youdomain.com/somefolder/HERE

如果当您说文件无效时,您得到的错误是找不到
文件
, 这是因为PHP根据PHP.ini中的include_路径配置确定对文件的搜索

您可以在以下网站了解更多信息:

实际上,
/
作为目录分隔符甚至不是一个可靠的方法。您应该使用
目录\u分隔符
常量

要解决此问题,您需要将include_路径修改为:

Unix

窗户

include_path=".;c:\path"
重写你的代码

include('file.php');
include('file.php');