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

升级CodeIgniter 4.5.1后报错:system/bootstrap.php已不再使用

解决CodeIgniter 4.5.1升级后"system/bootstrap.php已不再使用"报错的方案

针对升级后出现的报错问题,以下是具体排查和解决步骤:

1. 确认Web服务器文档根目录与缓存状态

  • 检查服务器(或Docker容器)的文档根目录是否严格指向项目的public文件夹,比如Nginx的root配置应为/var/www/html/public,Apache的DocumentRoot同理。若指向项目根目录,服务器可能加载根目录下残留的旧入口文件。
  • 清除OPcache缓存或重启Web服务器:旧的index.php内容可能被OPcache缓存,导致修改无法生效。可执行php -r "opcache_reset();"(容器内执行)或重启Nginx/Apache服务。

2. 彻底替换入口文件

  • 不要手动修改index.php和spark.php,直接从vendor/codeigniter4/framework/public/目录复制这两个文件到项目的public目录,完全覆盖原有文件。
  • 检查项目根目录下是否存在旧的index.php文件(非public子目录内的),如果有直接删除,避免服务器误加载。

3. 验证入口文件内容与环境配置

  • 打开项目public/index.php,确认其中没有任何对system/bootstrap.php的引用,且环境加载代码正确,示例如下:
    <?php
    declare(strict_types=1);
    
    use CodeIgniter\CodeIgniter;
    use CodeIgniter\Config\DotEnv;
    use CodeIgniter\Exceptions\FrameworkException;
    
    require realpath(__DIR__ . '/../app/Config/Paths.php') ?: __DIR__ . '/../app/Config/Paths.php';
    $paths = new Config\Paths();
    
    // 加载.env配置
    $envFile = realpath($paths->appDirectory . '/../.env') ?: $paths->appDirectory . '/../.env';
    if (file_exists($envFile)) {
        (new DotEnv($envFile))->load();
    }
    
    define('ENVIRONMENT', env('CI_ENVIRONMENT', 'production'));
    
    // 框架初始化代码...
    
  • 确认.env文件中CI_ENVIRONMENT已正确设置,无旧配置干扰。

4. 清理缓存与依赖

  • 执行composer dump-autoload重新生成自动加载映射,确保新框架文件被正确识别。
  • 删除项目writable/cache目录下的所有文件,清除框架缓存。
  • 进入Docker容器验证文件一致性:执行docker exec -it <容器名称> cat /var/www/html/public/index.php,检查文件内容是否与vendor目录下的新版本一致,确认容器内文件已更新。

5. 排查自定义入口与路由配置

  • 如果项目有自定义入口文件(如api.php),需按照新index.php的结构更新,移除所有对system/bootstrap.php的引用。
  • 检查服务器重写规则:确保.htaccess(Apache)或Nginx配置中,所有请求都转发到public/index.php,避免旧路由规则导致错误入口被加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 07:52:58