[英]CodeIgniter problems after upgrading to PHP 7.3
我已將我的PHP升級到適用於CodeIgniter 3.1.10的7.3.4版。 之后,我注意到網站的某些部分不再像以前那樣工作了(使用PHP 5.6)。
用例之一是當我輸入錯誤的URL時,如下所示:
www.abc.com/nl-be/antwerpen/this-is-a-bad-url
通常,這將轉到我的404頁面,但是現在我首先遇到以下錯誤:
Message: Call to a member function helper() on null
Filename: D:\wamp\www\codeigniter\application\hooks\LanguageLoader.php
代碼是:
class LanguageLoader
{
function initialize() {
$ci =& get_instance();
$ci->load->helper('language');
$site_lang = $ci->session->userdata('site_lang');
if ($site_lang) {
$ci->lang->load('message',$ci->session->userdata('site_lang'));
} else {
$ci->lang->load('message',$ci->session->userdata('site_lang'));
}
}
}
我設法找到解決方法,使用下面的代碼克服了這個問題(這正確嗎?):
class LanguageLoader
{
function initialize() {
$CI =& get_instance();
if ($CI === null) {
new CI_Controller();
$CI =& get_instance();
}
$CI->load->helper('language');
$site_lang = $CI->session->userdata('site_lang');
if ($site_lang) {
$CI->lang->load('message',$CI->session->userdata('site_lang'));
} else {
$CI->lang->load('message',$CI->session->userdata('site_lang'));
}
}
}
在檢查$ CI的值之后,這次它將不為null,但將被填充。這時,在轉到相同的錯誤URL之后,我收到以下錯誤消息:
Message: call_user_func_array() expects parameter 1 to be a valid callback, class 'Error' does not have a method 'my404'
Filename: core/CodeIgniter.php
該行上的CodeIgniter.php中的代碼包含:
call_user_func_array(array(&$CI, $method), $params);
該錯誤特別奇怪,因為我在Error類中有一個my404方法:
class Error extends My_Controller {
public function my404() {
//Code to show my 404 template
}
}
編輯:我的URL看起來像www.<sitename>.com/<languagesegment>/<optionalcityname>/<pathcontroller&function>
如果在URL中填寫了optionalcityname,則整個網站都以城市的顏色和徽標等為品牌標記。如果忽略該網站,則會出現“普通”網站。
轉到“正常”網站時,我的404頁面會正確顯示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.