Omar Abid
Omar Abid

Reputation: 15976

How to run a php script in cron

I have found many questions and articles about this but i still have some difficulties. I'm using the following command /usr/bin/php home/domain.com/public_html/cron/script.php I receive the following error Status: 404 Not Found X-Powered-By: PHP/5.2.8 Content-type: text/html

No input file specified.

i'm using Cpanel, the file is hosted on domain.com/cron/script.php Anyideas, thanks :p

Upvotes: 4

Views: 11245

Answers (5)

kewlashu
kewlashu

Reputation: 1109

In several shared hosting wget and curl commands are not available from cron. If one wants to execute a web (http) request from cron, then it can be done by calling the desired web url as php curl inside cron php script.

Below is an example code to be put inside cron php file:

<?php
function callRemoteHttp($url)
{

    $curl = curl_init();    

    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

    $result = curl_exec($curl);
    $ret_arr = array('data' => $result, 'status_code' => curl_getinfo($curl, CURLINFO_HTTP_CODE));
    curl_close($curl);

    return $ret_arr;
}
$ret = callRemoteHttp('http://example.com?param1=value1&param2=value2');
?>

Upvotes: 0

Octavian Vladu
Octavian Vladu

Reputation: 1250

I'm realising that it is an old question and that you may have found a solution but none of the answers above helped me and I was getting the same 404 error when I was running a cron script.

The problem was related to the way in which the path to the php script was written. The path must start from public_html like this /usr/bin/php public_html/public/index.php

Upvotes: 1

Kevin Lacquement
Kevin Lacquement

Reputation: 5117

Try:

wget -O - http://domain.com/cron/script.php

and see if you get a better result.

Edit: added "- O - " to not write output to home folder.

Upvotes: 7

X-Istence
X-Istence

Reputation: 16667

You might need to use the binary known as php-cli instead of just php.

Upvotes: 1

chaos
chaos

Reputation: 124267

Put a leading slash on the script name, i.e.

/usr/bin/php /home/domain.com/public_html/cron/script.php

Unless you actually intend to run the script through the web, as in lacqui's answer, and you don't mind random third parties being able to run it any time they like, there's no reason you should put it inside your public_html directory; quite the opposite.

Upvotes: 11

Related Questions