改完配置不生效,通常因修改了错误的php.ini文件、未重启web服务或被codeigniter自身配置覆盖;应通过phpinfo()确认真实加载路径,重启对应服务,并检查.env、index.php环境定义及运行时配置覆盖。

改完配置文件不生效,通常不是改错了,而是改的不是正在用的那个文件,或者改完没重启服务、没清缓存。
确认你改的是正确的 php.ini
PHP 有多个配置文件:CLI(命令行)用一个,Web 服务器(Apache/Nginx)用另一个。CodeIgniter 运行在网页环境下,必须改 Web 服务器加载的那个 php.ini。
- 在项目根目录新建 info.php,内容只写
<?php phpinfo(); ?> - 用浏览器访问
http://localhost/info.php(或你的域名路径) - 搜索 “Loaded Configuration File”,看到的路径才是真实生效的 php.ini
- 别凭记忆或命令行
php --ini的结果去改——它显示的是 CLI 配置,和网页无关
改完后必须重启 Web 服务
php.ini 是启动时读取的,修改后不重启,旧配置一直生效。
- Apache 用户:执行
sudo systemctl restart apache2(Ubuntu/Debian)或sudo apachectl restart(macOS) - Nginx + PHP-FPM 用户:重启 PHP-FPM,例如
sudo systemctl restart php7.4-fpm(版本号按实际调整) - XAMPP/MAMP:点面板上的“Restart Servers”按钮,别只点“Stop”再“Start”——确保完全重载
检查 CodeIgniter 自身配置是否被覆盖
框架内配置(如 app/Config/App.php 或 application/config/config.php)可能被环境变量、.env 文件或运行时代码覆盖。
- 查看是否有
.env文件,里面写了CI_ENVIRONMENT=production等——不同环境会加载不同配置目录 - 检查
index.php开头是否手动设置了环境,例如define('ENVIRONMENT', 'development');,这会影响配置加载路径 - 确认没有在控制器或库中动态调用
$this->config->set_item(),这类运行时设置会覆盖配置文件值
验证是否真没生效
别只看页面表现,直接查底层是否读到新值。
- 在控制器里临时加一行:
var_dump(ini_get('extension_dir'));或var_dump(get_cfg_var('date.timezone')); - 对 CodeIgniter 配置项,用
var_dump(config('App')->baseURL);(CI4)或var_dump($this->config->item('base_url'));(CI3)打印实际值 - 如果输出和你刚改的不一致,说明文件没生效;如果一致但功能异常,问题不在配置本身,而在逻辑或依赖环节











