Domanda

Ho riscontrato alcuni problemi con la funzione ob_* quando viene eseguito come un cronjob:

<?php
function getLayout($file, $extract=array()) {

    if (is_file($file)) {

        if (count($extract) > 0) {
            extract($extract);
        }

        ob_start();
        include $file;
        $contents = ob_get_contents();
        ob_end_clean();

        return $contents;
    }

    return false;
}

file_put_contents('somecachefile.html', getLayout('somefile.php', array('var1'=>$val1, 'var2'=>$val2)));
?> 

Il cronjob è configurato in questo modo: (corre ogni minuto)

* * * * * /usr/bin/php /path/to/cron.php > /dev/null

In questo caso nulla accada, ma il cron davvero corse.

Se io chiamo questo (/usr/bin/php /path/to/cron.php) dalla riga di comando che tutto funzioni come previsto.

Tutte le idee in cui ho fatto un errore?

Grazie per l'aiuto in anticipo!

È stato utile?

Soluzione

Probabilmente È necessario utilizzare un percorso assoluto su 'somefile.php'. Probabilmente è sempre creato nella pwd di cron. Oppure si potrebbe fare un chdir all'inizio dello script del nell'istruzione cron.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top