PHP包含服务器之间不同的语句

时间:2013-11-05 06:05:34

标签: php path include include-path

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

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

转移到共享的Linux CPanel服务器,但事实并非如此。我不得不这样做:

include('path/file.php');

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

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

如果您说错误时获得的错误为file cannot be found, 这是因为PHP根据php.ini中的include_path配置确定了对文件的搜索。

你可以在以下方面阅读更多内容: http://www.php.net/manual/en/ini.core.php#ini.include-path

实际上/作为目录分隔符甚至不可靠。您应该使用DIRECTORY_SEPARATOR常量。

要解决此问题,您需要将include_path修改为:

的Unix

include_path=".:/path"

include_path=".;c:\path"

重写你的代码,

include('file.php');

答案 2 :(得分:0)

该目录将相对于您执行include或require调用的* .php文件。

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