0

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

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

转移到共享的 Linux CPanel 服务器,它不是。我必须这样做:

include('path/file.php');

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

4

3 回答 3

1

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

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

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

于 2013-11-05T06:14:34.033 回答
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');
于 2013-11-05T06:29:03.630 回答
0

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

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

于 2013-11-05T06:14:13.463 回答