在 CPanel 上设置 Cron 作业以执行 PHP 脚本
Posted
技术标签:
【中文标题】在 CPanel 上设置 Cron 作业以执行 PHP 脚本【英文标题】:Setting up a Cron Job on CPanel to executes a PHP script 【发布时间】:2018-01-02 08:31:24 【问题描述】:正如标题所暗示的,Cron Job 应该执行一个 php 文件(具体来说是 update.php)。然后 php 文件写入存储在同一目录中的 csv 文件。
我将时间设置为 * * * * * 以便它每分钟执行一次。命令编写如下: php -q /home//public_html/wallboard/update.php 我不相信这会导致任何错误,尽管它似乎也没有写入 CSV 文件。但是,当我在浏览器中访问 update.php 时,它会立即执行并写入 CSV 文件。我对 Cron Jobs 没有经验,我确信存在问题,但我不知道这个问题到底是什么。如果您有任何建议/问题,请告诉我。任何帮助表示赞赏!
当前命令:
* * * * * usr/bin/php -q /home/<user>/public_html/wallboard/update.php
更新.php:
<?php
include('lib/HelpDeskView.php');
include('lib/WallboardDisplay.php');
include('helpdesk.csv');
$helpdesk = new HelpDeskView();
$text="\r\ntest,test,test";
file_put_contents( "helpdesk.csv" , $text, FILE_APPEND);
【问题讨论】:
尝试将php
更改为/usr/bin/php
你的相关代码+Linux的完整命令,请贴在这里。
尝试将 update.php 权限设置为 755。
1 - 您可能需要在包含语句中包含完整的目录名称,因为 PHP 在命令行模式下运行时可能不会想到与 Web 服务器运行时相同的起始目录. 2 - 我的托管公司,使用他们自己的控制面板,而不是 cpanel,通过使用文件的完整目录路径/名称而不是使用 /usr/bin/php 和文件名来运行 PHP cronjobs,并通过将 PHP 正确运行#!/usr/local/bin/php.cli
在文件的第一行。 3 - 我的托管公司说要使用权限 775。
【参考方案1】:
恕我直言,最好的方法是联系支持人员并询问他们有关命令行语法的信息。
这就是我在我的 linux 服务器上使用 cPanel 的方式。
这运行存储在公共根目录中的 script.php。当然,用你的用户名替换命令行中的<username>
。
在另一台服务器上,我在行首使用/usr/bin/php
而不是php
的相同命令行,但我知道并非所有服务器都使用相同的命令行。有些在命令行中需要php-cli
而不是php
,有些不“喜欢”-f
参数等。所以尝试各种组合。
要找到更多建议,请查看这个 SO 主题:Run a PHP file in a cron job using CPanel
重要的一点:尝试不同的命令时,至少等待一分钟(本例)看看它是否有效,因为 Cron 不会立即触发您的脚本。
【讨论】:
【参考方案2】:尝试在 PHP CLI 中执行相同的命令并检查它是否给您任何错误,您可能缺少 CLI 执行所需的一些库或引用。
【讨论】:
使用 cpanel 的典型主机不允许 CLI 访问,因此这可能不是一个选项。 在否决答案之前先清除您的问题。 @Wh1T3h4Ck5 我知道 cmets 是做什么用的,但我的意思是不要投票和影响某人的声誉,毕竟他们试图帮助你是不对的。我建议的不是断章取义的解决方案。【参考方案3】:由于您的脚本位于您的 public_html
目录中,您可以将 wget
用于您的 Cron 作业
wget -O - -q https://yoursite.com/wallboard/update.php
-O -
输出被写入标准输出,在这种情况下它将发送到您在 CPanel 中指定的电子邮件地址
-q
安静模式
【讨论】:
【参考方案4】:/usr/bin/php -d register_argc_argv=On /home/USERNAME/public_html/DOMAIN/artisan AMIR:HOME
【讨论】:
以上是关于在 CPanel 上设置 Cron 作业以执行 PHP 脚本的主要内容,如果未能解决你的问题,请参考以下文章