2013-11-05 77 views
0

一个WIN2008/IIS7服务器上的工作之间的不同,这个PHP包含语句是有效的:PHP包含语句的服务器

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

移动到一个共享的Linux服务器的cPanel,事实并非如此。我必须代替做到这一点:

include('path/file.php'); 

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

回答

1

IIS中的第一个/引用了domain/localhost的根文件夹。例如,您可以像这样使用浏览器访问页面:http://localhost/path/file.php

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

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

0

该目录将相对于* .php文件,您可以在其中进行包含或需要调用。

在你上面的例子中,'path/file.php'。我假设文件(可以说是index.php),其中包含'path/file.php',该文件应该位于与'path'相同的目录中。

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" 

的Windows

include_path=".;c:\path" 

重写代码,

include('file.php');