2012-06-06 112 views
0

我使用CodeIgniter 2.1並將我的生產服務器更新爲PHP 5.4.3-1,並且使用phpactiverecord的頁面不會顯示任何內容,也不會顯示任何錯誤。致命錯誤:在PHP版本升級後未找到類'Category'

在我的測試服務器與5.3.6正常工作。

我使用2012年5月的夜間版本。我嘗試使用舊版本和穩定版本。

Php-activerecord不能很好的使用php 5.4.3嗎?


編輯:我發現我的新的服務器doesn't有displays_errors = ON。後激活它,我看到的錯誤:

Fatal error: Class 'Category' not found in /srv/www/framework/application/controllers/categories.php on line 26 

在第26行:存在於/srv/www/framework/application/controllers/

$data["categories"] = Category::findby($parent_id); 

categories.php並能正常工作的PHP 5.3.6。

我需要撥打更多電話或以其他方式撥打電話?

+0

是否在命名空間文件中的行?該類是否在具有命名空間的文件中定義? – Nanne

+1

聽起來像是您的自動加載器存在問題。我不知道這是如何在CodeIgniter中工作的,但它是可調試的PHP。我首先設置一個帶有5.4.x的新虛擬服務器,然後在本地複製問題。另外,如果它是已知問題,請檢查CI郵件列表。 – halfer

+0

另外,'Category'是一個模型類嗎? – halfer

回答

0

我找到了解決方案。

此解決方案是通過最新的SPARKS版本的php-activerecord。

調試autoload_function,從來就看到模型文件加載的第一個字母大寫,僅在PHP 5.4.3,而不是在5.3.x,則應和文件wash't加載。

找到ActiveRecord.php在

yourfolder/sparks/php-activerecord/0.0.0.2/vendor/php-activerecord 

搜索功能:

activerecord_autoload($class_name) 

線49變:

$file = $root.DS.$file_name; 

$file = $root.DS.strtolower($file_name); 

現在它的工作!

p.d.解決這個問題之前,我發現了PHP 5.4.3的另一個奇怪的例子。如果數據庫密碼對字符串有'/',函數parse_url()將返回false。因此,php-activerecord無法在函數file parse_connection_url()中的文件yourfolder/sparks/php-activerecord/0.0.0.2/vendor/php-activerecord/lib/connection.php中連接到數據庫。

在PHP 5.3上返回正確的數組。

相關問題