我已经构建了一个 php 文件来检查一些结果,所以我需要设置一个 cronjob。
我设置了一个每 30 分钟运行一次,以便发送结果。但是,我不知道为什么我的 crontab 没有每 30 分钟运行一次。
我是这样设置crontab的:
*/30 * * * * php /var/www/html/result.php
我已经确认我的文件目录是正确的。我不确定的是时间部分:是否可以使用 */30 * * * *
或 30 * * * *
?我设置了 */30 * * * *
但没有用。
最佳答案
给定
*/30 * * * * php /var/www/html/result.php
它不工作的原因有多种:
首先重要的是检查
php/var/www/html/result.php
的简单执行。这是必需的。但遗憾的是,做到这一点并不意味着问题就解决了。必须添加
php
二进制文件的路径。*/30 * * * * php /var/www/html/result.php
改成
*/30 * * * * /usr/bin/php /var/www/html/result.php
或来自
which php
的任何内容。检查脚本对运行 crontab 的用户的权限。
赋予文件执行权限:
chmod +x file
。并确保 crontab 由有权执行脚本的用户启动。还要检查用户是否可以访问文件所在的目录。为了安全起见,也可以在脚本最前面加上php路径,如:
#!/usr/bin/php -q <?php ... ?>
确保用户有权使用 crontab。查看他是否在
/etc/cron.d/deny
文件中。另外,做个基础测试看看是crontanb还是php的问题。* * * * * touch /tmp/hello
将脚本的结果输出到日志文件,如William Niu suggested .
*/30 * * * * /usr/bin/php /var/www/html/result.php > /tmp/result
使用
-f
选项执行脚本:*/30 * * * * /usr/bin/php -f /var/www/html/result.php > /tmp/result
确保 crontab 中的格式正确。例如,您可以使用网站 Crontab.guru 来这样做.
综上所述,可能的原因有很多。其中之一应该可以解决问题。
关于php - 为什么 crontab 不执行我的 PHP 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7397469/