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.
Best Answer
The problem was the variables of the SDK to connect with IBM Infomix database. Although I had set the PATH, it was necessary to export the environment variables from IBM Informix that I define when I did install the Informix SDK. The strange was that even with the PDO exeptions no one error was generate when I redirect error standard output with &>.
May exist an most elegant way to do that but I can't play with live environment. Follow that cron job that currently works: