No estaba seguro si postear esto en el foro de php o en el de Linux, asi que lo postee en los dos para ver si alguien me puede ayudar.
Les cuento un poco de que trata:
Tengo un archivo php que quiero ejecutar en el cron de Linux, este php se encarga de obtener el estado de distintos servicios como base de datos, correo, particiones de disco, etc. y guardarlos en una base de datos.
El problema es el siguiente:
Cuando ejecuto el script en el navegador funciona sin ningun tipo de problema. Cuando lo ejecuto por linea de comandos con putty (php -f /home/andres/public_html/systemmonitor/testcron.php) tambien funciona sin problemas. Pero cuando este php se ejecuta en el cron por alguna razon hay una funcion del script que al parecer no se ejecuta bien, esta funcion que presenta problemas es la que se encarga de obtener la fecha del ultimo registro de una base de datos oracle, al ejecutarse en el cron obtiene esto 00-00-0000 00:00:00.
Es realmente extraño porque ni en el navegador ni en linea de comando me lanza ningun tipo de error o warning. He revisado todo el script y no tiene nada extraño, incluso cree un archivo aparte de prueba donde solo tengo la funcion que se encarga de hacer la funcion que tiene problemas, pero es lo mismo que les comentaba (funciona en navegador y en linea de comandos pero no en cron). Probe con dos funciones para ver si era algun problema de compatibilidad o algo por el estilo, probe con oci_connect y con la libreria ADODB, pero obtengo el mismo resultado. Ya no se que hacer, espero puedan ayudarme. Aqui les dejare el codigo php que ejecuto y la linea que se ejecuta en crontab.
La distribucion que tiene el servidor es: CentOS 5.7
Linea de crontab: */15 * * * * php -f /home/andres/public_html/systemmonitor/testcron.php >/dev/null 2>/dev/null
Script PHP:
Código PHP:
require('db.config.php');
require('db.configoracle.php');
require('model/EstadoProveedor.php');
$connOracle = new DbConfigOracle();
$conOracle = $connOracle->connect();
if($datos = $conOracle->Execute("SELECT PROVIDER, to_char(LOC_DATE,'YYYY/MM/DD HH24:MI:SS') as LOC_DATE FROM THEMIS.CLG_V_LAST_PROV_LOC WHERE PROVIDER = 'CLS'")){
$dato = $datos->FetchRow();
$ultimoDatoBD = $dato['LOC_DATE'];
$connOracle->close();
}
$conn = new DbConfig();
$con = $conn->connect();
$estado_proveedor = new EstadoProveedor();
$estado_proveedor->ultimo_correo = date("Y/m/d H:i:s");
$estado_proveedor->ultimo_dato_bd = $ultimoDatoBD;
$estado_proveedor->fecha = date("Y/m/d H:i:s");
$estado_proveedor->fecha_creacion = date("Y/m/d H:i:s");
$estado_proveedor->proveedores_id_proveedor = 1;
$estado_proveedor->save();
$conn->close();
De antemano muchas gracias