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

如何将CodeIgniter 4实例移至上层目录且不影响原有index.php?get_instance可用吗?

问题解答

一、将CodeIgniter 4实例迁移到www.website/目录且保留原有index.php

  1. 复制核心文件:把www.website/projects/my_cifiles下除public目录外的所有文件/文件夹(如app、system、writable、composer.json等),直接复制到www.website/目录。
  2. 自定义CI入口文件:不要覆盖根目录原有index.php,可选择以下两种方案:
    • 方案A:在www.website/下新建自定义入口文件(比如ci_start.php),复制my_cifiles/public/index.php的内容进去,然后修改文件内的$pathsPath变量,确保指向根目录的CI配置文件,示例:
      $pathsPath = realpath(FCPATH . 'app/Config/Paths.php');
      // 也可直接写绝对路径:$pathsPath = '/www.website/app/Config/Paths.php';
      
    • 方案B:若希望通过子路径访问CI4(如www.website/ci/),可在根目录新建ci文件夹,将my_cifiles/public下的所有文件复制进去,再修改该文件夹内index.php的路径配置,确保能找到根目录的CI核心文件。
  3. 权限与配置更新:确保www.website/writable目录的权限和原实例一致;修改www.website/app/Config/App.php中的baseURL,匹配新的访问路径(比如方案A设为对应入口文件的路径,方案B设为https://www.website/ci/)。

二、关于在根目录引入CodeIgniter类的问题

CodeIgniter 4已移除了get_instance()函数,这是CI3及更早版本的用法。如果要在根目录的非CI入口文件中引入并使用CI4类,需手动初始化CI4环境:

  1. 引入CI4的自动加载器:
    require '/www.website/vendor/autoload.php';
    
  2. 初始化CI4应用实例:
    $app = \CodeIgniter\CodeIgniter::create();
    $app->initialize();
    
  3. 通过服务容器获取所需类实例,比如获取数据库连接:
    $db = \Config\Database::connect();
    // 或用服务容器语法:$db = service('database');
    

注意:外部文件引入CI4类时,需确保路径配置正确,避免依赖找不到的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 18:45:40