2011-12-27 44 views
1

我已經在本地安裝了Codeigniter 2.1.0,它工作的很好。Codeigniter:調用非對象上的成員函數item()

但是,當我把它上傳到我的供應商我第一次得到:

$system_path = "system"; 
$application_folder = "application"; 

到(爲什麼我從來沒有:

Your system folder path does not appear to be set correctly. Please open the following file and correct this: index.php

我可以改變的index.php解決這個問題做到這一點...)

$system_path = dirname(__FILE__) . "/system"; 
$application_folder = dirname(__FILE__) . "/application"; 

但後來我得到:

Fatal error: Call to a member function item() on a non-object in <path>/Utf8.php on line 47

我可以註釋掉這行,但是我在其他地方得到類似的錯誤。

請問,在我的供應商這個問題?或者我做錯了什麼?我之前使用過CI,並且在別處完美地工作。 PS:請不要這是CI的全新安裝。

+0

你要確保你的$配置[「BASE_URL」]更改爲新的域,並以htaccess的任何必要的改變? – Rooster

回答

1

是和否, 問題在於您的提供者可能與您的Web服務器設置可能不同。如果他這樣做,你必須調整適合需求的設置。

此問題的主要根源是可以在文件系統中表達路徑的各種樣式。 * NIX系統使用正斜槓表示文件夾結構。在Windows機器上它是一個反斜槓。 * NIX系統具有文件系統根目錄「/」,Windows機器有C:/,D:/ etc ...每個文件系統都有不同的訪問權限設置和管理。

在大多數UNIX系統上工作定位路徑沒有麻煩。因此,如果codeigniter試圖從「所謂的」相對目錄中確定CI位於其中的目錄的絕對路徑,他將成功。如果沒有,它不能工作,因爲他不知道它要加載的文件在哪裏。

在PHP版本中也存在很多錯誤。例如。有報道PHP 5.2.0和Windows Apache的錯誤(對目錄有一定的權限),即使目錄存在,is_dir()函數也會返回False,它應該(並且在另一個系統上)返回True。

確保路徑正確加載的最確定的方法是給出CI絕對路徑。絕對路徑因操作系統而異,例如。在UNIX上是/var/www/domain.com/system,在Windows上「誰知道?」。但有一種方法可以輕鬆確定。

創建的index.php文件在根文件夾,你可以用這個內容裏面訪問:

<?php phpinfo(); ?> 

如果您加載的頁面就會出現(除其他事項外)說行的絕對路徑與:

_SERVER["DOCUMENT_ROOT"] | /var/www/mydomain.com/ 

現在,如果您將絕對路徑分配給$ system_path變量,它應該就足夠了。爲了更確定地分配$ application_folder變量。

注意,路徑系統文件夾必須以代碼點火器和路徑的系統文件夾應用程序文件夾必須向應用文件夾。例如:

$system_path = "/var/www/mydomain.com/system"; 
$application_folder = "/var/www/mydomain.com/application"; 

之後,您的網站應該完美無缺地工作。

(也有一些提到這個用戶指南:http://ellislab.com/codeigniter/user-guide/installation/index.html

相關問題