【问题标题】:Why does my command works in the CLI but not with a cron job?为什么我的命令在 CLI 中有效,但在 cron 作业中无效?
【发布时间】:2014-08-02 05:54:42
【问题描述】:

我有以下命令可以在终端上按原样运行:

php ~/Sites/meetmyfriends-back/index.php tools reset_avail

我正在尝试执行一项 cron 工作,但它不起作用。

0 6 * * * php ~/Sites/meetmyfriends-back/index.php tools reset_avail

我想要每天早上 6 点。

为什么它不起作用?

我还想将日志存储在带有>> ~/MyFile 的文件中,但这并不奏效。 MAILTO:my@email.com 都不是。

请指教。我在 Mac OS X 10.10 上。

编辑:经过几次试验,这就是我现在的位置:

0 6 * * * /usr/bin/php /Users/YohannM/Sites/meetmyfriends-back/index.php tools reset_avail >> /Users/YohannM/Sites/meetmyfriends-back/resetA.log

【问题讨论】:

    标签: php macos command-line terminal cron


    【解决方案1】:

    很确定问题出在相对的~/ 路径上:

    0 6 * * * php ~/Sites/meetmyfriends-back/index.php tools reset_avail
    

    您应该设置脚本的完整路径。像这样的东西;当然将/Users/MilesM 更改为您的实际路径:

    0 6 * * * php /Users/MilesM/Sites/meetmyfriends-back/index.php tools reset_avail
    

    问题在于,当您通过 cron 作业运行命令时,它不会加载您登录时获得的所有 bash 设置和路径。所以在终端中,~/ 是有道理的,但对于 cron 工作来说,/Users/MilesM/ 是要走的路。

    你还问:

    我还想将日志存储在带有>> ~/MyFile 的文件中,但是 那也没有用。既不是MAILTO:my@email.com

    对于>> ~/MyFile,解决方案是相同的。您必须像这样设置完整路径:

    >> /Users/MilesM//MyFile
    

    但不清楚MAILTO:my@email.com。那是一个 HTML 标签。您的意思是您正在尝试通过 PHP 脚本发送邮件?不确定那部分。

    另外,您需要指定完整的 PHP 路径才能执行此操作。首先,使用which 找出完整的 PHP 路径,如下所示:

    which php
    

    在我的 Mac OS X 设置中它返回:

    /usr/bin/php
    

    所以完整的命令是:

    0 6 * * * /usr/bin/php /Users/MilesM/Sites/meetmyfriends-back/index.php tools reset_avail
    

    这应该可行。

    【讨论】:

    • 可能甚至需要php 可执行文件的完整路径,具体取决于$PATH cron 运行:/usr/bin/php /Users/Miles/Sites..../index.php tools reset_avail
    • 如果有必要,我会尽快通知您。
    • 很遗憾,0 6 * * * php /Users/MilesM/Sites/meetmyfriends-back/index.php tools reset_avail 不起作用。我要试试 Michael B. 的建议。
    • @MilesM。很抱歉听到你仍然卡住了。检查我的编辑,了解如何确认您将为php 使用正确的完整路径。
    猜你喜欢
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-12
    • 1970-01-01
    • 2014-08-13
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多