我在 Amazon Linux 上有一个部署到 Elastic Beanstalk 的 Symfony (PHP) 命令。我添加了一个 cron 作业。一切看起来都很好。 cron 作业运行,在/tmp 文件夹中创建日志文件,但它是空的 - 每次执行命令时应该至少有几个字符。 我在这里看到了一些关于运行 cron 作业的帖子,但没有一个有效 - 我的问题是关闭 this one .
诀窍是,如果我通过 SSH 连接到实例并手动运行此命令,所有这些都会按预期开始工作。 Cron 会在每次设置为运行时运行该命令。但是第一次需要手动运行,否则无法正确执行。
我通过 script.sh 运行 PHP 命令,其中有 #!/bin/bash。
问题是为什么这需要首先手动运行并且它从 cron 运行。否则它不会。 我已将日志文件权限设置为 0666,这样任何人都可以写入,但没有成功。
我将我的 Symfony 命令部署到 Elastic Beanstalk。如果我只有一个 EC2 实例不会有问题,但我使用 Elastic Beanstalk 来扩展它并需要它在没有手动初始化的情况下运行。
感谢任何帮助。 谢谢
最佳答案
终于,在 3 小时后,感谢 this post,我让它开始工作了和 Robert Brisita 的回答。
In crontab -e file:
SHELL=/bin/bash
*/1 * * * * $HOME/cron_job.sh
In cron_job.sh file:
#!/bin/bash
source $HOME/.bash_profile
some_other_cmd
诀窍是为 cron 启用环境变量。否则我会收到 Symfony 错误。 我没有看到它们,因为我在错误的地方输出了文件。它在 script.sh 文件中,而不是在 crontab 中。
现在一切正常。
关于PHP Symfony 命令在手动运行之前无法从 cron 运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43569687/