You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter 3.0 + PHP7.2.3(LAMPP)中redirect()函数失效问题

解决CodeIgniter 3中redirect()函数无法正常工作的问题

结合你提供的环境(LAMPP服务器、PHP7.2.3、CodeIgniter 3.0)和配置代码,我整理了几个针对性的排查与解决方向:

1. 先确认base_url的正确配置

CodeIgniter 3.0开始要求必须明确设置base_url,否则site_url()和redirect()会出现异常。打开application/config/config.php,检查并修改:

$config['base_url'] = 'http://localhost/你的项目目录/'; // 替换成你实际的项目访问路径

2. 优化redirect的调用写法

你当前的写法redirect(site_url().'dashboard/index');有点冗余,框架的redirect()函数可以直接接收路由路径,改成下面的规范写法试试:

redirect('dashboard/index');

这种写法更贴合框架逻辑,能避免不必要的URL拼接问题。

3. 排查是否存在"提前输出"

redirect()依赖PHP的header()函数,而header()必须在**任何输出(包括空格、HTML标签、echo/print内容)**之前执行。请检查:

  • 控制器、模型、视图文件的开头/结尾有没有多余的空格或空行
  • 确保已经完全删除之前测试用的echo、print_r和die;代码(哪怕是注释掉的输出内容也可能有影响)
  • 检查auth->login()方法内部有没有意外的调试输出(比如var_dump、echo)

4. 开启输出缓冲作为临时补救

如果暂时找不到提前输出的源头,可以先开启输出缓冲应急:

  • 在config.php中设置:
$config['compress_output'] = TRUE;
  • 或者在项目根目录的index.php顶部添加:
ob_start();

不过还是优先建议排查并消除提前输出的问题,这是更规范的做法。

5. 验证Session是否正常运行

你的登录逻辑依赖Session,而redirect()默认会用到Session传递flash数据。检查config.php的Session配置:

$config['sess_driver'] = 'files';
$config['sess_save_path'] = APPPATH.'sessions/'; // 确保这个目录存在且有读写权限
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;

同时确认autoload.php已经加载Session库:

$autoload['libraries'] = array('session');

Session初始化失败也会导致redirect失效。

6. 尝试强制刷新跳转

如果以上方法都没用,可以试试强制用HTTP刷新头跳转:

redirect('dashboard/index', 'refresh');

这种方式会绕过框架默认的跳转逻辑,直接发送刷新指令给浏览器。


内容的提问来源于stack exchange,提问作者Salman Quader

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:12:45