Image upload werkt niet via cronjob
Hoi, waar kan het aan liggen als de image niet via de cronjob upload? als ik de pagina handmatig aanroep werkt het wel.
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.
/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?
Anders word het heel veel gokwerk.
En op die manier krijg je ook geen foutmeldingen te zien als er wat fout gaat. Anders worden deze heel netjes gemaild.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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());
?>
$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.
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 ;-).
Gewijzigd op 11/08/2015 22:10:59 door Thomas van den Heuvel
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?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';
}
?>
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';
}
?>
Even je output loggn, en dus niet in het /dev/null/ 'zwarte gat' gooien.
Hierdoor zal $DBconn niet bestaan.
De trigger_error() wordt niet gezien door dit: >/dev/null 2>&1
Ik zal een proberen om het te uploaden naar de map images.
Thomas van den Heuvel op 11/08/2015 22:09:11:
Mogelijk draait PHP dan onder een andere user en kan ie niet schrijven naar die directories (ofzo).
Ik heb gedaan wat je zei met de log.txt en er stond in dat hij de file ned-groot.png niet kon vinden, nu heb ik deze afbeelding het hele pad meegegeven en het werkt nu.