我已将我的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 nullFilename: 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 }}编辑:我的网址看起来像 www.<sitename>.com/<languagesegment>/<optionalcityname>/<pathcontroller&function>如果在URL中填写了optionalcityname,则整个网站都以城市的颜色和徽标等为品牌标记。如果忽略该网站,则会出现“普通”网站。转到“正常”网站时,我的404页面会正确显示。
- 1 回答
- 0 关注
- 224 浏览
添加回答
举报
0/150
提交
取消