一個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');