在win2008 / IIS7服务器上工作,这个php include语句有效:
include('/path/file.php');
转移到共享的Linux CPanel服务器,但事实并非如此。我不得不这样做:
include('path/file.php');
当我第一次编写代码时,我的印象是开放/
意味着从访问初始文件的根文件夹开始。这是可以在.ini文件中设置的东西吗?它是特定于PHP版本的吗?
答案 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'的同一目录下。