在win2008/IIS7服务器上工作,这个php include语句是有效的:
include('/path/file.php');
转移到共享的Linux CPanel服务器,它不是。 我必须这样做:
include('path/file.php');
当我第一次编写代码时,我的印象是打开/
意味着从访问初始文件的根文件夹。 这是可以在.ini文件中设置的内容吗? 它是PHP版本特定的吗?
IIS 中的第一个/
是指域/本地主机的根文件夹。例如,您可以使用浏览器访问该页面,如下所示:http://localhost/path/file.php
第二种形式,不带/
表示URL相对于包含文件的页面文件夹.php转到子文件夹路径并在那里找到文件。
我相信机器之间的文件夹结构是不同的:在 unix 机器上,它部署在: http://www.youdomain.com/somefolder/HERE
如果您说错误无效时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');
该
目录将相对于执行包含或要求调用的 *.php 文件。
在上述情况下,对于"路径/文件.php"。我假设包含"路径/文件.php"的文件(假设索引.php),该文件应该与"路径"位于同一目录中。