Reputation: 15976
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
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¶m2=value2');
?>
Upvotes: 0
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
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
Reputation: 16667
You might need to use the binary known as php-cli instead of just php.
Upvotes: 1
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