在生产服务器上设置 Laravel 调度程序(Inmotion 托管)

Setting Up Laravel Scheduler on Production Server (Inmotion Hosting)

我已经意识到,您为 laravel 调度程序编写 cron 的方式因托管而异,因此在这种情况下文档毫无用处。

我在以前的主机 (siteground) 上使用的相同代码似乎不适用于我当前的主机 (inmotion)。

运行调度程序的 cron,我从 CPanel 设置的那个似乎可以工作:

php -q /home/xxxxx/xxxxx/artisan schedule:run

我说它似乎有效,因为每当我的 cron 运行时我都会收到这封电子邮件:

Running scheduled command: /usr/bin/php -q /home/xxxxx/xxxxx/artisan {command} > '/dev/null' 2>&1 &

现在上面的脚本似乎没有执行,它只是挂起,进程堆积起来占用我的内存,直到我的整个服务器崩溃。

所以我在这里很困惑,为什么 php -q /home/xxxxx/xxxxx/artisan schedule:run 执行但不知何故我的应用程序无法执行 /usr/bin/php -q /home/xxxxx/xxxxx/artisan {command}

我用谷歌搜索了它和一些建议,在哪里使用 php-cli 而不是 php -q 但是 php-cli 给我一个 command not found 错误。

所以我就此询问了支持人员,他们是这样说的:

I am not certain how you were able to run that command with another host, as php-cli is not a command for the php command line interface. Unfortunately, because this is not a valid command, I am not sure if I understand what you are trying to accomplish by running it.

php -q is the option that executes php-cli, which is what you should be using for your crons; however it will only properly execute if the coding of the file that you are executing is correct.

我已经用了 2 天了,我的问题是如何让我的 laravel 调度程序无任何错误地执行,有没有人有部署 laravel(lumen ) 在 inmotion 服务器或类似服务器上的应用程序?提前致谢。 :)

所以它可能与 cli php 版本有关,但我仍然不确定,但我终于让它与这个一起工作:

/usr/bin/php -ea_php 70 -q /home/xxxxx/xxxxx/artisan schedule:run

然后我将第 49 行的 Illuminate/Console/Scheduling/Schedule.php 文件编辑为:

return $this->exec("/usr/bin/php -ea_php 70 -q /home/xxxxx/xxxxx/artisan {$command}", $parameters);

现在似乎可以工作了。 :)