artisan 命令无效解决办法之一
php artisan 各种命令无效。包括php artisan list, php artisan make:controller TestController等命令。
缘起:线上代码定时任务不能运行。本地和测试区都没有问题。只能在线上服务器查找问题。找了半天也没有找到解决办法。本地测试执行php artisan serve命令后,复现了这个问题。php artisan serve 是方便本地开发的时候没有装apache或nginx时来用来演示的, 使用这个就不能使用php artisan 创建命令了。需要杀掉aritisan 进程。ps aux | grep artisan
并杀死进程。
重新执行php artisan list
解决问题,但是线上的服务器还是没有解决问题。大家有遇到这个问题吗?大家是怎么解决的
服務器上 執行 php -v 有PHP版本號訊息嗎?? 記得有些服務器要指定PHP版本才能用呢,類似/usr/local/bin/ea-php56 /home/houkangc/domain_path/path/to/cron/script
@HaoChang 有 PHP 5.6
是在项目根目录下执行的吗?
@dongzt 是的
测试了 不是serve的原因 我这里serve了还是一样可以正确执行 我怀疑是你php级别的错误 建议检查php的错误日志
可能的几种错误:1 bootstrap文件夹跟storage文件夹没有权限
2 跟服务器的用户组不一致
3 其他语法错误
@tradzero 公司项目laravel 版本是5.4.22,的确能出现这个问题。我试了下5.2.45、5.3.31、5.5.40不会复现这个问题
@tradzero 找到问题了,是因为队列代码当中我们flock一个文件。
当取得独占锁定失败时候回退出程序,跟laravel 版本无关,但是以前这样执行的时候没有报错,现在队列不能执行,artisan没有作用。代码也没有更改,这种怎么解决这个问题
@wpby 可能这是系统层级的死锁? 为什么不用try catch finally 在finally的时候fclose释放资源?
这个有何解决办法吗?