2

Ok so if I run this in the terminal:

/usr/bin/php /var/www/tasks/CreateContacts.php

The PHP script runs fine:

I have added this to crontab -e

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

It seems to be running ok because CreateContact_Output.txt has been created yet contains nothing - and my outcome changes (in database) haven’t been done.

This is running on an Ubuntu server.

EDIT: Added contents of PHP file below:

<?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);
    }
}
?>
4
  • Post CreateContacts.php. Are you relying on $_SERVER variables in your code to complete your task? This could be the problem. running /usr/bin/php by command, and by CRON will set completely different $_SERVER contents/keys. Commented May 11, 2014 at 20:30
  • It was the problem I had before, not sure if it's affecting you here too. But worth mentioning. Commented May 11, 2014 at 20:32
  • Not using $_SERVER in my code or called functions. Commented May 11, 2014 at 20:34
  • 1
    First of all, check your php error log. Commented May 11, 2014 at 22:12

1 Answer 1

2

I guess you should change to the working directory before running PHP, so that your include statement work :

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

or you could use an absolute path as well in your code :

include realpath(dirname(dirname(__FILE__))).'/../public_html/_dbconnect.php';
Sign up to request clarification or add additional context in comments.

2 Comments

This was great I use the code in the top line so my includes now work. I don't suppose you would be able to help me on why the logging just overrides rather than appends to the log? It seems to overwrite it each times it runs. Thoughts?
Just replace > with >> and it will append the output instead of rewriting it each time

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.