I have a PHP file that is needed to be run from the command line (via crontab). I need to pass type=daily
to the file, but I don’t know how. I tried:
php myfile.php?type=daily
but this error was returned:
Could not open input file: myfile.php?type=daily
What can I do?
Advertisement
Answer
The ?type=daily
argument (ending up in the $_GET
array) is only valid for web-accessed pages.
You’ll need to call it like php myfile.php daily
and retrieve that argument from the $argv
array (which would be $argv[1]
, since $argv[0]
would be myfile.php
).
If the page is used as a webpage as well, there are two options you could consider. Either accessing it with a shell script and Wget, and call that from cron:
#!/bin/sh wget http://location.to/myfile.php?type=daily
Or check in the PHP file whether it’s called from the command line or not:
if (defined('STDIN')) { $type = $argv[1]; } else { $type = $_GET['type']; }
(Note: You’ll probably need/want to check if $argv
actually contains enough variables and such)