“no input file specified”本质是web服务器无法定位index.php入口文件,主因包括:一、根目录未指向含index.php的codeigniter项目根目录;二、nginx缺少fastcgi_param script_filename配置或伪静态规则错误;三、php的cgi.fix_pathinfo=0;四、.user.ini中open_basedir路径限制不匹配。

CodeIgniter 提示 “No input file specified” 本质不是框架自身报错,而是 Web 服务器(Nginx 或 Apache)在尝试将请求交给 PHP 解析时,未能正确识别或定位到 index.php 入口文件。常见于部署后首次访问、更换服务器环境或升级宝塔/PHP 版本后。以下是针对 CodeIgniter 的实用排查与修复路径:
确认入口文件位置和根目录设置
CodeIgniter 默认要求网站根目录指向 项目根目录(含 application/、system/、index.php),而非 public 子目录(这点不同于 Laravel)。若误将根目录设为 public/,Nginx 就找不到 index.php,直接报错。
- 登录宝塔面板 → 【网站】→ 对应站点【设置】→ 【根目录】,检查路径是否为
/www/wwwroot/your-ci-site(即包含 index.php 的那一层) - 用【文件】管理器打开该路径,确认
index.php文件真实存在且可读(权限建议 644) - 若你手动把 index.php 移到了 public/ 下,请回退——CodeIgniter 不依赖 public 入口结构,强行迁移会破坏路由解析
检查 Nginx 伪静态与 fastcgi_param 配置
CodeIgniter 依赖 PATH_INFO 或 QUERY_STRING 传递 URI,若 Nginx 没正确传递 SCRIPT_FILENAME,就会触发该错误。
- 进入站点【配置文件】,找到
location ~ \.php(.*)$ {区块 - 确保包含这一行且未被注释:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - 在
location / {区块中,添加标准 CodeIgniter 重写规则(非 Laravel 的 try_files):if (!-f $request_filename) {<br> rewrite ^/(.*)$ /index.php/$1 last;<br>} - 保存后点击【重载配置】
验证 PHP 的 PATH_INFO 支持状态
CodeIgniter 默认使用 PATH_INFO 模式解析 URL(如 /index.php/user/login)。若 PHP 禁用了该特性,Nginx 无法生成有效路径参数。
- 进入【PHP管理】→ 对应版本【配置修改】
- 搜索
cgi.fix_pathinfo,确认其值为1(即cgi.fix_pathinfo = 1) - 保存后返回【服务】→ 【PHP管理】→ 重启对应 PHP-FPM 进程
- 如仍异常,可在
application/config/config.php中临时改用 QUERY_STRING 模式:$config['uri_protocol'] = 'QUERY_STRING';
排查 .user.ini 中的 open_basedir 限制
宝塔建站自动生成的 .user.ini 文件常含 open_basedir,若它锁定的路径不包含当前项目实际路径,PHP 就拒绝加载 index.php——日志里通常显示 “Operation not permitted”。
- 用【文件】管理器进入网站根目录,查看是否存在
.user.ini - 编辑该文件,检查
open_basedir =后的路径是否覆盖你的完整项目路径(例如:/www/wwwroot/your-ci-site/:/tmp/:/proc/) - 若路径错误或缺失,修正后保存;或临时重命名为
.user.ini.bak测试是否恢复 - 修改后务必重启 PHP-FPM(仅重载 Nginx 不生效)











