运行php artisan serve提示无法创建锁文件(AlmaLinux/CentOS8)求解决
问题诊断与解决方法
问题根源
该错误与PHP OPcache的锁文件创建失败有关。在AlmaLinux 8/CentOS 8这类RHEL系系统中,PHP CLI模式下的OPcache配置可能引用了不存在的目录,或者普通用户没有该目录的写入权限,导致无法生成锁文件。
问题性质
既涉及缺失目录(对应"No such file or directory"错误),也涉及权限限制(对应"Bad File Descriptor"错误),二者都是OPcache锁文件路径配置不当引发的连锁问题。
解决方法
方法1:禁用CLI模式下的OPcache(推荐)
OPcache对CLI模式的PHP并非必需,直接禁用是最简便的方案:
- 编辑OPcache配置文件(通常路径为
/etc/php.d/10-opcache.ini) - 找到
opcache.enable_cli项,修改为:opcache.enable_cli=0 - 保存文件后,重新执行
php artisan serve即可正常运行。
方法2:修复锁文件目录的存在性与权限
若需保留OPcache功能,可手动配置合法的锁文件路径:
- 查看当前锁文件路径:
php -i | grep opcache.lockfile_path - 若路径指向不存在的目录,创建该目录并赋予当前用户写入权限:
sudo mkdir -p /var/run/php-opcache sudo chown $USER:$USER /var/run/php-opcache - (可选)若默认路径不合理,可在
opcache.ini中指定用户主目录下的路径:opcache.lockfile_path=/home/你的用户名/.php-opcache.lock - 保存配置后重启命令。
方法3:临时禁用OPcache执行命令
无需修改配置文件,单次运行时临时关闭OPcache:
php -d opcache.enable_cli=0 artisan serve
内容的提问来源于stack exchange,提问作者jay
相关产品推荐
相关产品推荐

