一个WIN2008/IIS7服务器上的工作之间的不同,这个PHP包含语句是有效的:PHP包含语句的服务器
include('/path/file.php');
移动到一个共享的Linux服务器的cPanel,事实并非如此。我必须代替做到这一点:
include('path/file.php');
当我第一次写的代码,我的印象是,开幕/
意味着从已被访问初始文件的根文件夹去下。这是可以在.ini文件中设置的东西吗?这是PHP版本特定的?
一个WIN2008/IIS7服务器上的工作之间的不同,这个PHP包含语句是有效的:PHP包含语句的服务器
include('/path/file.php');
移动到一个共享的Linux服务器的cPanel,事实并非如此。我必须代替做到这一点:
include('path/file.php');
当我第一次写的代码,我的印象是,开幕/
意味着从已被访问初始文件的根文件夹去下。这是可以在.ini文件中设置的东西吗?这是PHP版本特定的?
IIS中的第一个/
引用了domain/localhost的根文件夹。例如,您可以像这样使用浏览器访问页面:http://localhost/path/file.php
第二种形式,没有/
意味着URL是相对于包含file.php的页面的文件夹转到子文件夹路径和那里找到该文件。
我相信,文件夹结构的机器之间的不同:在UNIX机器上,它是根据部署:http://www.youdomain.com/somefolder/HERE
该目录将相对于* .php文件,您可以在其中进行包含或需要调用。
在你上面的例子中,'path/file.php'。我假设文件(可以说是index.php),其中包含'path/file.php',该文件应该位于与'path'相同的目录中。
如果你得到的错误是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');