Hoi, waar kan het aan liggen als de image niet via de cronjob upload? als ik de pagina handmatig aanroep werkt het wel.
Ik zie niet hoe het uploaden van afbeeldingen via een cron zou moeten verlopen?

Via gesimuleerde browser-requests?
Via FTP?
?

Je hebt waarschijnlijk een script dat de upload afhandelt? Zit hier logging / debugging in?

Zorg dat je informatie hierover ontvangt, anders blijf je in het duister tasten.
Het zijn afbeeldingen met informatie die elke 5 minuten verandert. Ik maak gebruik van het pad:

/usr/local/bin/php -q -f /home/*uw gebruikersnaam*/domains/*uw domeinnaam*/public_html/cronjob_bestand.php >/dev/null 2>&1

Dit adviseert mijn hoster en adviseert ook om geen gebruik te maken van Wget.

Maar waar kan het meer aan liggen dat de image via de browser/handmatig wel werkt en via de cron niet? Cmod?
Code! Relevante code willem we zien. :)
Anders word het heel veel gokwerk.
">/dev/null 2>&1"
En op die manier krijg je ook geen foutmeldingen te zien als er wat fout gaat. Anders worden deze heel netjes gemaild.
Dit is de code die ik gebruik, handmatig werkt het perfect en via de cron wordt allen de gegevens in de database toegevoegd alleen geen image geüpload.

<?php
        $bui = $src;  
        $naam = $dag.'-'.$tijd.'.png';
        $pad = '/home/gebruiker/domains/domein.nl/public_html/images/radarimg/'.$naam;
        $doel = $naam;
        
        $bui = imagecreatefrompng($bui);
        $back = imagecreatefrompng('ned-groot.png');

        imagecopyresampled($back, $bui, 0, 0, 565, 490, 1280, 720, 1380, 730); //1051

        imagepng($back, $pad);
        imagedestroy($back);

        $insert = "INSERT INTO regen_radar (doel, tijd, datum, datumtijd) VALUES 
        ('".$doel."', '".$tijd."', '".$dag."', '".$datetime."')"; 
        mysqli_query($DBconn, $insert)or die(mysqli_error());
?>
Waar komt $src vandaan? Waar komt $tijd vandaan? Waar komt $DBconn vandaan? En zo verder.
Roep dat ding eens via de shell aan als je shell access hebt? Mogelijk draait PHP dan onder een andere user en kan ie niet schrijven naar die directories (ofzo).

En ja, wat Ben zegt :s.

EDIT: en er zit totaal geen logging/debugging in... Schrijf eens wat informatie weg naar een logbestand... Als dit logbestand leeg blijft dan ben je wss al warm ;-).
Ik heb geen toegang tot de shell, hier de hele code.

<?php
ini_set( 'display_errors', 1 ); 
error_reporting( E_ALL | E_STRICT );

include 'config.php';

    $sql = "SELECT tijd, datum, datumtijd FROM regen_radar ORDER by datumtijd DESC";

    if(!$res = mysqli_query($DBconn, $sql))
    {
        trigger_error(mysqli_error().'<br />In query: '.$sql);
    }
    elseif(mysqli_num_rows($res) == 0)
    {
        $hoogstetijd = 0; 
    }
    else
    { 
        $row = mysqli_fetch_assoc($res);
        
        if($row['tijd'] == '')
        {
	        $hoogstetijd = 0;
        }
        else
        {
            $hoogstetijd = $row['tijd'];
        }
    } 

	$json = file_get_contents('http://api.bron.nl/?key=xxxxx');
	$obj = json_decode($json, true);
	
	$src = $obj['map_types']['actueel']['Images'][10]['Src'];
	$tij = $obj['map_types']['actueel']['Images'][10]['Label'];
	$dat = $obj['map_types']['actueel']['Images'][10]['Time'];
	

    
	$datetime = date('Y-m-d H:i:s', strtotime($dat));
	$dag = date('Y-m-d', strtotime($dat));
	$tijd = str_replace(':', '', $tij);

	//echo $tijd;
	
    if($tijd > $hoogstetijd)
    {
        $bui = $src;
        $naam = $dag.'-'.$tijd.'.png';
        $pad = '/home/gebruiker/domains/domein.nl/public_html/images/radarimg/'.$naam;
        $doel = $naam;
        
        $bui = imagecreatefrompng($bui);
        $back = imagecreatefrompng('ned-groot.png');

        imagecopyresampled($back, $bui, 0, 0, 565, 490, 1280, 720, 1380, 730); //1051

        imagepng($back, $pad);
        imagedestroy($back);

        $insert = "INSERT INTO regen_radar (doel, tijd, datum, datumtijd) VALUES 
        ('".$doel."', '".$tijd."', '".$dag."', '".$datetime."')"; 
        mysqli_query($DBconn, $insert)or die(mysqli_error());
    }
    else
    {
	    //echo 'nog niet';
    }
?>
/usr/local/bin/php -q -f /home/*uw gebruikersnaam*/domains/*uw domeinnaam*/public_html/cronjob_bestand.php >> /home/*uw gebruikersnaam*/domains/*uw domeinnaam*/public_html/log.txt

Even je output loggn, en dus niet in het /dev/null/ 'zwarte gat' gooien.
De include gaat waarschijnlijk niet werken omdat het volledige path mist.
Hierdoor zal $DBconn niet bestaan.
De trigger_error() wordt niet gezien door dit: >/dev/null 2>&1

Reageren