codeigniter在宝塔部署与本地开发核心逻辑一致,但存在五大差异:根目录指向(ci4必须设为public/)、php扩展与参数需手动启用、base_url须改为完整域名、nginx/apache重写规则须显式配置、调试模式与日志权限需按生产环境约束调整。

CodeIgniter项目在宝塔面板部署和本地开发,核心逻辑一致,但运行环境、路径结构、配置方式和安全约束存在实质性差异。这些差异不是“能不能跑”的问题,而是“怎么跑对”“怎么跑稳”的关键。
部署环境决定入口和目录权限
宝塔面板默认以 Web 服务器(Nginx/Apache)的 Document Root 为访问起点,而 CodeIgniter 对根目录非常敏感:
- CI3 可直接把整个项目放
wwwroot/your-site/下,index.php在顶层即可工作; - CI4 必须将 Web 根目录指向
public/子目录(不能是项目根目录),否则app/和system/会被外部直连,构成严重安全隐患; - 宝塔新建站点时,默认根目录是
/www/wwwroot/域名/,需手动修改为/www/wwwroot/域名/public/(CI4)或保持原路径(CI3)。
PHP 和扩展配置需主动匹配
本地 XAMPP/WAMP 通常自带较宽松配置,而宝塔中:
- PHP 版本需明确选择(CI3 推荐 7.4,CI4 要求 ≥8.0);
- 必须启用
mbstring、curl、json、openssl等扩展(宝塔软件商店 → PHP → 设置 → 安装扩展); -
upload_max_filesize、post_max_size、max_execution_time等参数若未调大,上传或长任务会失败。
URL 和路径配置必须重设
本地用 http://localhost/myapp,上线后变成 https://yourdomain.com,相关配置不能沿用:
- CI3 的
application/config/config.php中$config['base_url']需改为完整域名(如'https://yourdomain.com/'); - CI4 的
app/Config/App.php中$public $baseURL = 'https://yourdomain.com/';必须填写,否则 CSS、JS、图片全 404; - 数据库配置中的
hostname一般填127.0.0.1(宝塔 MySQL 默认绑定本地),而非localhost(部分 PHP 版本下解析异常)。
重写规则必须显式配置
本地开发环境常依赖 .htaccess 自动生效,但宝塔中:
- Apache 用户需确认站点设置里“伪静态”已选
codeigniter规则; - Nginx 用户必须手动填写重写规则(宝塔站点 → 设置 → 伪静态),CI3 和 CI4 规则不同,不能混用;
- CI4 若未正确配置,访问非首页路由(如
/admin/login)会直接返回 404,而不是进入框架路由层。
调试与日志行为受限
生产环境默认关闭错误显示:
- CI3 的
index.php顶部需将ENVIRONMENT改为'development',但宝塔不建议长期开启; - CI4 的调试模式需同时满足:
APP_DEBUG = true(.env文件)、app/Config/Boot/development.php被加载、PHP 的display_errors = On(宝塔 PHP 设置中开启); - 日志默认写入
writable/logs/,需确保该目录在宝塔中具有www用户可写权限(文件管理 → 权限设为 755/644,所有者设为www)。











