管理应用程序

默认情况下,CodeIgniter 假定仅用于管理一个应用程序(即在 app 目录下构建的应用)。不过,也可以让多个应用程序集共用同一个 CodeIgniter 安装,或者重命名及移动应用程序目录。

重命名或移动应用程序目录

如果需要重命名应用程序目录,或者将其移至服务器中项目根目录以外的其他位置,请打开主 app/Config/Paths.php 文件,并在 $appDirectory 变量中设置 服务器完整路径 (约在第 44 行):

<?php

namespace Config;

class Paths
{
    // ...

    public $appDirectory = '/path/to/your/app';

    // ...
}

此外,还需要修改项目根目录下的两个文件,以便程序能够找到 Paths 配置文件:

  • spark:运行命令行应用。

    require FCPATH . '../app/Config/Paths.php';
    // ^^^ Change this line if you move your application folder
    
  • public/index.php:Web 应用的前端控制器。

    require FCPATH . '../app/Config/Paths.php';
    // ^^^ Change this line if you move your application folder
    

使用一套 CodeIgniter 安装运行多个应用

如果希望共用同一个 CodeIgniter 框架来管理多个不同的应用程序,只需将原应用程序目录下的所有目录放入各自的(子)目录中即可。

例如,假设要创建两个分别名为 foobar 的应用程序。可以按如下方式组织项目目录结构:

foo/
    app/
    public/
    tests/
    writable/
    env
    phpunit.xml.dist
    spark
bar/
    app/
    public/
    tests/
    writable/
    env
    phpunit.xml.dist
    spark
vendor/
    autoload.php
    codeigniter4/framework/
composer.json
composer.lock

备注

如果是通过 Zip 文件安装的 CodeIgniter,目录结构如下:

foo/
bar/
codeigniter4/system/

在此结构下,foobar 两个应用都拥有标准的应用程序目录和 public 文件夹,并共用同一个 codeigniter4/framework

每个应用下的 app/Config/Paths.php 需要将 $systemDirectory 变量设置为指向共用的 codeigniter4/framework 文件夹:

<?php

namespace Config;

class Paths
{
    // ...

    public $systemDirectory = __DIR__ . '/../../../vendor/codeigniter4/framework/system';

    // ...
}

备注

如果是通过 Zip 文件安装的 CodeIgniter,$systemDirectory 应设置为 __DIR__ . '/../../../codeigniter4/system'

同时,需要修改每个应用下 app/Config/Constants.php 中的 COMPOSER_PATH 常量:

<?php

defined('COMPOSER_PATH') || define('COMPOSER_PATH', ROOTPATH . '../vendor/autoload.php');

仅在更改了应用程序目录时,请参阅 重命名或移动应用程序目录 并修改 index.phpspark 中的路径。

更改 .env 文件位置

如有必要,可以通过调整 app/Config/Paths.php 中的 $envDirectory 属性来更改 .env 文件的位置。

默认情况下,框架会从 app/ 目录上一级(即 ROOTPATH)的 .env 文件中加载环境设置。按照建议将域名正确指向 public/ 目录时,该位置是安全的。

但在实际操作中,某些应用是通过子目录(例如 http://example.com/myapp)而非主域名提供服务的。在这种情况下,如果 .htaccess 或其他保护措施配置不当,将 .env 文件留在 ROOTPATH 可能会泄露敏感配置数据。

为了避免此类风险,建议确保 .env 文件位于任何 Web 可访问目录之外。

警告

如果更改了 .env 文件的位置,请务必确保其无法通过公共访问。该文件一旦泄露,可能会导致凭据被盗,并使数据库、邮件服务器或第三方 API 等关键服务面临风险。