php 脚本未被 crontab 执行

php 脚本未被 crontab 执行

我已经设置了一个 cron 来执行我的一个 php 脚本。但问题是 php 脚本根本没有执行,甚至连部分执行都没有。

这是我设置的 cron

45 23 * * * /usr/bin/php -q /var/www/myscript.php

我已经尝试过以下

  1. 我将 cron 从普通用户移除到 root 用户,仍然没有结果。
  2. 我使用以下方法更改了脚本的权限chmod +x /var/www/myscript.php
  3. whereis php我使用了以下命令

    php: /usr/bin/php /usr/share/man/man1/php.1.gz
    

现在,我不知道还能做什么。请帮忙。

PS 我可以手动执行脚本并且它可以完美运行。

答案1

1. 正如man php告诉我们的……

   --no-header
   -q             Quiet-mode. Suppress HTTP header output (CGI only).

   --file file
   -f file        Parse and execute file

-q不做任何事物在 php-cli 模式下。正如其他人指出的那样,您需要-f

2. +x 不是必需的。

恢复方法如下:

chmod -x /var/www/myscript.php

3.whereis将为您提供所有位置。如果您只想要二进制文件,请使用which php

$ which php
/usr/bin/php

答案2

我只是猜测一下,但放置脚本的路径不应该是

45 23 * * * /usr/bin/php /var/www/html/myscript.php

我还是 cron 的新手:)

答案3

请参阅man cronDebian 特定的更改。引用:

> 如上所述,这些目录下的文件必须通过一些健全性检查,包括:可执行、由 root 拥有、不可由组或其他用户写入,并且如果是符号链接,则指向 root 拥有的文件。此外,文件名必须符合 run-parts 的文件名要求:它们必须完全由字母、数字组成,并且只能包含特殊符号下划线(“_”)和连字符(“-”)。任何不符合这些要求的文件都不会被 run-parts 执行。例如,任何包含点的文件都将被忽略。

答案4

正确的 crontab 行应该是:

45 23 * * * /usr/bin/php -f /var/www/myscript.php

注意-f而不是-q

相关内容