2013-11-05 107 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');