不同PHP版本下出现Trying to access array offset on null错误求助
解决CodeIgniter项目切换PHP版本后仍报数组偏移错误的问题
Web服务器未同步PHP版本配置
你用sudo update-alternatives --set php /usr/bin/php5.6仅切换了CLI环境的PHP版本,但Web服务器(Apache/Nginx)依赖独立的PHP模块或PHP-FPM服务,不会自动同步版本:- 若使用Apache:
- 禁用当前PHP8.x模块:
sudo a2dismod php8.x(将x替换为实际版本,如8.1) - 启用PHP5.6模块:
sudo a2enmod php5.6 - 重启Apache生效:
sudo systemctl restart apache2
- 禁用当前PHP8.x模块:
- 若使用Nginx+PHP-FPM:
- 确保已安装php5.6-fpm:
sudo apt install php5.6-fpm - 编辑Nginx站点配置,将
fastcgi_pass指向php5.6-fpm的套接字(通常为unix:/run/php/php5.6-fpm.sock) - 重启相关服务:
sudo systemctl restart php5.6-fpm && sudo systemctl restart nginx
- 确保已安装php5.6-fpm:
- 若使用Apache:
验证PHP版本是否真正生效
在项目根目录创建info.php文件,内容如下:<?php phpinfo(); ?>通过浏览器访问该文件,查看页面顶部的PHP版本信息。如果仍显示8.x,说明Web服务的PHP版本未切换成功,需重新检查上述配置。
排查CodeIgniter核心文件的代码问题
打开core/Controller.php查看第110行代码,该错误通常是因为尝试访问null值的数组偏移(例如$someNullVar[$key])。在PHP5.x中这类Notice级错误可能默认被屏蔽,但如果项目错误级别设置较高仍会显示。可以给相关变量添加非空判断:// 示例修改:原代码 $value = $_SERVER['HTTP_SOME_HEADER'][0]; // 修改为 $value = isset($_SERVER['HTTP_SOME_HEADER']) ? $_SERVER['HTTP_SOME_HEADER'][0] : '';
内容的提问来源于stack exchange,提问作者MCIT Trends
相关产品推荐
相关产品推荐

