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

时间:2014-05-11 20:26:15

标签: 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已创建但尚未包含任何内容 - 我的结果更改(在数据库中)尚未完成。

这是在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);
    }
}
?>

1 个答案:

答案 0 :(得分:2)

我想你应该在运行PHP之前切换到工作目录,这样你的include语句就可以了:

*/2 * * * * cd /var/www/tasks/ && /usr/bin/php CreateContacts.php > /root/CronTasks/CreateContact_Output.txt

或者您也可以在代码中使用绝对路径:

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