CodeIgniter部署Vercel遇EISDIR错误:非法读取目录操作
CodeIgniter项目Vercel部署报错:Error: EISDIR: illegal operation on a directory, read
使用CodeIgniter框架部署项目到Vercel时,无论处于哪个目录都会触发Error: EISDIR: illegal operation on a directory, read错误,部署日志详情如下:
[22:47:40.765] 克隆github.com/johan-sar/myapi.tokojohan.org(分支:main,提交版本:4119c36) [22:47:41.978] 克隆完成:1.213s [22:47:42.359] 恢复构建缓存 [22:47:42.414] 执行"vercel build" [22:47:43.076] Vercel CLI 28.10.0 [22:47:43.268] 警告!由于配置文件中存在`builds`,项目设置中定义的构建和开发设置将不生效。了解更多:https://vercel.link/unused-build-settings [22:47:43.293] > 安装构建工具:vercel-php@0.3.1 [22:47:48.575] 🐘 下载用户文件 [22:47:48.576] 🐘 下载PHP运行时文件 [22:47:48.580] 🐘 安装Composer依赖项 [开始] [22:47:48.815] [3.1MiB/0.00s] 未找到锁文件。将更新依赖项而非从锁文件安装。如果没有锁文件,请使用composer update替代composer install。 [22:47:48.817] [3.2MiB/0.01s] 加载包含包信息的Composer仓库 [22:47:48.828] [3.4MiB/0.02s] 更新依赖项 [22:47:48.839] [3.6MiB/0.03s] 锁文件无需修改 [22:47:48.839] [3.6MiB/0.03s] 写入锁文件 [22:47:48.839] [3.6MiB/0.03s] 从锁文件安装依赖项 [22:47:48.840] [3.7MiB/0.03s] 无需安装、更新或移除任何内容 [22:47:48.845] [3.6MiB/0.03s] 新依赖项添加了1个包建议,使用`composer suggest`查看详情。 [22:47:48.845] [3.6MiB/0.03s] 生成自动加载文件 [22:47:48.846] [3.6MiB/0.03s] 内存使用:3.63MiB(峰值:3.92MiB),耗时:0.03s [22:47:48.856] 🐘 安装Composer依赖项 [完成] [22:47:49.067] 🐘 创建lambda [22:47:52.711] Error: EISDIR: illegal operation on a directory, read
修复方案
这个错误是vercel-php构建工具在打包Lambda时,尝试读取目录而非文件导致的,针对CodeIgniter项目可按以下步骤处理:
修正vercel.json配置
确保builds字段指定的入口是CodeIgniter的实际入口文件public/index.php,避免将目录设为入口。示例配置:{ "builds": [ { "src": "public/index.php", "use": "@vercel/php" } ], "routes": [ { "src": "/(.*)", "dest": "public/index.php" } ] }清除构建缓存
Vercel缓存可能残留旧配置,部署时添加清除缓存参数:vercel build --clean排查目录与权限问题
检查项目中是否存在命名冲突的目录/文件,或空目录导致的读取异常;确认vendor目录已正确生成,Composer依赖安装完整。升级vercel-php版本
当前使用的vercel-php@0.3.1存在已知的目录读取bug,尝试升级到最新版本:vercel build --build-tool vercel-php@latest
内容的提问来源于stack exchange,提问作者Johan Samuel
相关产品推荐
相关产品推荐

