2017-08-03 82 views
1

我試圖用PHP 5.6運行我的Joomla 1.x的網站,並得到了以下錯誤:的Joomla 1.5.x的網站工作與PHP 5.3,但不與PHP工作5.6

Strict Standards: Declaration of KHttpUri::set() should be compatible with KObject::set($property, $value = NULL) in /home/beauty/www/libraries/koowa/http/uri.php on line 0 Strict Standards: Declaration of KHttpUri::get() should be compatible with KObject::get($property = NULL, $default = NULL) in /home/beauty/www/libraries/koowa/http/uri.php on line 0 Strict Standards: Non-static method JLoader::register() should not be called statically in /home/beauty/www/libraries/joomla/cache/cache.php on line 19 Strict Standards: Declaration of JCacheStorage::get() should be compatible with JObject::get($property, $default = NULL) in /home/beauty/www/libraries/joomla/cache/storage.php on line 0 Strict Standards: Non-static method JLoader::register() should not be called statically in /home/beauty/www/libraries/joomla/document/document.php on line 19 Strict Standards: Non-static method JLoader::import() should not be called statically in /home/beauty/www/libraries/loader.php on line 186 Strict Standards: Non-static method JLoader::import() should not be called statically in /home/beauty/www/libraries/loader.php on line 186 Fatal error: Call-time pass-by-reference has been removed in /home/beauty/www/plugins/content/listitems.php on line 95

網站與工作正常之前PHP 5.3(在Ubuntu 12.X LTS上),所以這可能與PHP 5.3/5.6的兼容性有關。

有誰知道這是什麼?這可能涉及哪些PHP擴展?

+0

你是否也改變了php.ini文件? - 禁用嚴格的標準? –

+0

我沒有更改php.ini,但我有「error_reporting = E_ALL&〜E_DEPRECATED&〜E_STRICT」 – Koban

+0

,但在PHP 5.3中,我有'error_reporting = E_ALL&〜E_DEPRECATED',我的網站正常工作。很可能PHP 5.3和5.6中的這兩個設置都是等價的,因爲E_ALL在PHP 5.6中發生了變化。 – Koban

回答

0

對這樣一箇舊的Joomla版本進行修補並使其通過php 5.6運行是沒有意義的。 Joomla 1.5.x不兼容PHP 5.4和5.6;這是舊的,但仍然可用:docs.joomla.org/Joomla_1.5_won't_work_on_PHP_5.4。儘管如此,庫庫瓦並不是Joomla本身的一部分,您可以重命名類的聲明,將所有稱爲靜態的函數(即JLoader :: register())重命名爲靜態函數等。但是您仍在使用不安全的舊庫/插件/組件和Joomla版本。也許你已經更改了其他地方的錯誤報告(.htaccess),你應該看看http://php.net/manual/en/appendices.php。您應該更好地將您的網站遷移到最新的Joomla3.7.4和PHP7 ... 順便說一下,Call-time pass-by-reference has been removed in /home/beauty/www/plugins/content/listitems.php on line 95可以像PHP 5.4 Call-time pass-by-reference - Easy fix available?一樣解決,通常函數調用不使用@。請同時指定Joomla的確切版本(請在您的問題中),1.0和1.5之間以及1.7是巨大的差異!

+0

Joomla版本是1.5.23。我沒有.htaccess,因爲我使用Nginx,並且在php.ini中禁用了E_STRICT。 – Koban

+0

遷移到Joomla 3.7是浪費時間的過程,有一些自定義的PHP代碼和VirtueMart組件。如果很難使用PHP 5.6工作,我可以在Docker容器中輕鬆安裝帶有Ubuntu 12.04的PHP 5.3,但我不確定這是個好主意。 – Koban

+0

這是舊的,但仍然可用:https://docs.joomla.org/Joomla_1.5_won't_work_on_PHP_5.4。從1.5到最新版本的遷移過程確實是一項艱鉅的任務,特別是使用自定義代碼和Virtuemart。但是如果你想通過這樣的網頁去上網,那麼遷移Joomla是必須的(由於安全性)。 –

-1

這些只是嚴格和標準的警告,所以你可以將全局配置參數調試設置爲無,所有警告都將消失。

更好的辦法是檢查代碼並手動修復PHP 5.6處理 - 沒有開發者會給你支持Joomla!v1.5了,所以你必須自己修復它。

+0

請仔細閱讀整個任務(2天前),有一個_Fatal_ _error_:通過引用的呼叫時傳遞已在95行的/home/beauty/www/plugins/content/listitems.php中刪除。再次: Joomla 1.5不兼容PHP 5.4,所以它使用PHP 5.6(鏈接已經發布)。 –