PHP不在CRON中运行,但在终端中运行

PHP不在CRON中运行,但在终端中运行,php,cron,Php,Cron,好的,如果我在终端中运行这个: /usr/bin/php /var/www/tasks/CreateContacts.php PHP脚本运行良好: 我已将此添加到crontab-e */2 * * * * /usr/bin/php /var/www/tasks/CreateContacts.php > /root/CronTasks/CreateContact_Output.txt 它似乎运行正常,因为CreateContact_Output.txt已创建,但未包含任何内容,而且我的结

好的,如果我在终端中运行这个:

/usr/bin/php /var/www/tasks/CreateContacts.php
PHP脚本运行良好:

我已将此添加到
crontab-e

*/2 * * * * /usr/bin/php /var/www/tasks/CreateContacts.php > /root/CronTasks/CreateContact_Output.txt
它似乎运行正常,因为
CreateContact_Output.txt
已创建,但未包含任何内容,而且我的结果更改(在数据库中)尚未完成

这是在Ubuntu服务器上运行的

编辑:在下面添加了PHP文件的内容:

<?php
include '../public_html/_dbconnect.php';
include '../public_html/_functions.php';
$query = "SELECT * FROM CustomerDetails;";
$results = mysqli_query($con, $query);
if(mysqli_num_rows($results) == 0){
        //Do fuck all
}else{
    while($row = mysqli_fetch_array($results)) {
      $HeartID = CreateHeartContact($row['Name']);
      echo 'Sending Customer ID:' . $row['id'] . '<br>';
      $UniqueID = $row['id'];
      $NewQuery = "UPDATE CustomerDetails SET ID = '$HeartID' WHERE ID = '$UniqueID';";
      mysqli_query($con, $NewQuery);
    }
}
?>

我想您应该在运行PHP之前切换到工作目录,以便您的
包含
语句工作:

*/2 * * * * cd /var/www/tasks/ && /usr/bin/php CreateContacts.php > /root/CronTasks/CreateContact_Output.txt
或者您也可以在代码中使用绝对路径:

include realpath(dirname(dirname(__FILE__))).'/../public_html/_dbconnect.php';

Post CreateContacts.php。您是否依赖代码中的$\u服务器变量来完成任务?这可能就是问题所在。通过命令和CRON运行
/usr/bin/php
,将设置完全不同的$\u服务器内容/密钥。这是我以前遇到的问题,不确定它是否也会影响您。但值得一提的是,在我的代码或调用的函数中没有使用
$\u SERVER
。首先,检查您的php错误日志。这很好,因为我使用了顶行中的代码,所以我的include现在可以工作了。我想你不能帮我解释为什么日志只是覆盖而不是附加到日志中?它似乎每次运行时都会覆盖它。想法?只需将
>
替换为
>
,它将追加输出,而不是每次重写