Although I checked the canonical issue for cron, I couldn't solve the problem. Why is my crontab not working, and how can I troubleshoot it?
So, here I go:
I have a php script that queries a MySQL and IBM Informix database (located in other host), generates json files, handles the information and inserts it into the MySQL database.
The script has a main file and another that has the query handling functions. Staying like this:
/opt/project
script.php
functions.php
The script.php requires the functions.php file, and gene
I can run the script smoothly using absolute or relative path.
Inside /opt/project:
# php script.php
Somewhere else:
# /usr/bin/php /opt/project/scrpt.php
However, when its executed by cron job, doesn't work. I did already set up informing environment variables, performed log tests, and even created a shell script to run script.php with cron running the shell script.
Server PATH (CentOS 7): /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/IBM/informix/bin
Crontab contents tried:
SHELL=/usr/local/bin
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/IBM/informix/bin
*/14 * * * * /usr/bin/php /opt/project/script.php
With root ahead command:
SHELL=/usr/local/bin
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/IBM/informix/bin
*/14 * * * * root /usr/bin/php /opt/project/script.php
Changing directory:
SHELL=/usr/local/bin
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/IBM/informix/bin
*/14 * * * * cd /opt/project && /usr/bin/php script.php
Cron to run shell script instead php directly:
SHELL=/usr/local/bin
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/IBM/informix/bin
*/14 * * * * cd /opt/project && sh run_script.sh
Where shell script has the following content:
#!/usr/bin/env bash
cd /opt/project
PHP=`which php`
$PHP script.php
The cron logs didn't show anything wrong, and if I redirect the output to a file it's create the file, but didn't run the php script, even by shell script to do that. I tried with not set SHELL and PATH in the crontab, but doesn't work too.