【问题标题】:Running PHP File on a Cronjob in cPanel在 cPanel 的 Cronjob 上运行 PHP 文件
【发布时间】:2013-10-16 20:26:18
【问题描述】:

我有一个名为 automatic.php 的文件,其中包含一个 mysql 连接字符串和一些 PHP/SQL 查询,我想在 Cronjob 上运行该文件。

我尝试过使用完整的 URL,例如:

http://www.domain.com/script.php

本地路径:

/home/your_username/public_html/script.php

还有:

php -f -q /home/your_username/public_html/script.php

我每次运行它都会收到一封电子邮件,它只是说:没有指定输入文件。

我做错了什么?

【问题讨论】:

  • $ php /home/your_username/public_html/script.php 返回什么?
  • 当我的 SQL 查询中没有返回任何行时,它只会回显“没有要发送的电子邮件”的文本;
  • 每次运行 cron 作业时,服务器都会发送电子邮件并显示结果/错误

标签: php mysql cron


【解决方案1】:

使用这个命令

每 5 分钟

*/5 * * * * wget http://www.domain.com/script.php

【讨论】:

  • 最好不要在 webroot 中提供 cron 脚本
  • 这与它是否工作正常无关。让人们发现他们可以从 URL 调用 cron 脚本可能会导致非常不希望的结果。使用本地路径。
【解决方案2】:

你应该有你的服务器域 + 你的脚本路径 IE。 http://server.domain.net/myscriptfolder/script.php 这是您的托管/域提供商的http://server.domain.net 绝对域。 就我而言,这是可行的……

【讨论】:

    【解决方案3】:

    这听起来像是权限问题。确保 cron 运行器用户对此 php 文件具有可执行权限。同时使文件可执行:

    chmod +x /path/to/script.php
    

    在文件顶部添加:

    #! /usr/bin/env php
    

    现在脚本应该可以自己运行了:

    */5 * * * * /path/to/script.php
    

    【讨论】:

    • 现在显示 /usr/local/cpanel/bin/jailshell: /home/integra/public_html/automate/integra/scripts/send_queued_emails.php: Permission denied
    • 我已经在php文件的顶部添加了你所说的(#!/usr/bin/env php)
    • @user2710234 当您查看该文件的权限时,您确定它可以由 cron 用户执行吗?
    • 它现在说 - 没有这样的文件或目录,但是当我使用包含域名的完整 URL 时,它会在 URL 的末尾放置:
    【解决方案4】:

    如果 wget 不起作用,请尝试

    卷曲“http://url.com/script.php

    而不是

    wgethttp://url.com/script.php

    【讨论】:

      【解决方案5】:

      使用这个命令

      php-cli script.php

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-01
        • 2015-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-14
        • 1970-01-01
        相关资源
        最近更新 更多