system() binnen een function()
ik heb het volgend probleem op mijn nieuwe server, draaiend op 5.3. (i now...)
Op de ene server werkt het, waar de andere weigert... :
namelijk, ik heb een function() met daarin een een Imagemagick execution
iets als
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$res = upload_multiple_file(aaaaa, bbbb);
echo $res;
function upload_multiple_file($file,$file_dir) {
$make_magic = system("/usr/bin/convert -resize 1600x1600\> $foto1 $foto2", $retval31);
...
}
het probleem is dat de system() niet wil werken [b]binnen[/b] deze functie, [b]erbuiten[/b] wel. Dit werkt op meerdere servers, maar die ene..noppes.
Herkent er iemand dit, dien ik ergens op te letten ? Heb al grondig de php.ini's bekeken, maar vind het niet...
Alvast bedankt !!
$res = upload_multiple_file(aaaaa, bbbb);
echo $res;
function upload_multiple_file($file,$file_dir) {
$make_magic = system("/usr/bin/convert -resize 1600x1600\> $foto1 $foto2", $retval31);
...
}
het probleem is dat de system() niet wil werken [b]binnen[/b] deze functie, [b]erbuiten[/b] wel. Dit werkt op meerdere servers, maar die ene..noppes.
Herkent er iemand dit, dien ik ergens op te letten ? Heb al grondig de php.ini's bekeken, maar vind het niet...
Alvast bedankt !!
Zet dit eens bovenin je script:
$retval zal van system een returnvalue gaan ontvangen. Is een wat on-php-ige manier van vullen van variabelen.
Mogelijk moeten $foto1 en 2 $file1 en 2 zijn?
@Ivo: Mijn fout. Je hebt helemaal gelijk, ook wat die varnamen betreft.
manual.
De aanroept lijkt syntactisch correct, $retval31 is een call-by-reference variabele die de return status van het uitgevoerde commando teruggeeft.
@Cristobal: begrijp je wat hier gebeurt? Je roept met PHP een extern programma aan. Ik weet niet op wat voor omgevingen jouw websites actief zijn, maar het lijkt erop dat het pad /usr/bin/convert niet (meer) beschikbaar is op de nieuwe omgeving OF dat je webhost het uitvoeren van externe programma's niet toestaat OF dat /usr/bin/convert niet executable is of een combinatie van alle voorgaande punten.
EDIT: en ja, waar komen die variabelen vandaan, maar mogelijk was er meer code verwijderd uit dit fragment. Aangezien dit voorheen blijkbaar wel werkte.
If in doubt, consult the De aanroept lijkt syntactisch correct, $retval31 is een call-by-reference variabele die de return status van het uitgevoerde commando teruggeeft.
@Cristobal: begrijp je wat hier gebeurt? Je roept met PHP een extern programma aan. Ik weet niet op wat voor omgevingen jouw websites actief zijn, maar het lijkt erop dat het pad /usr/bin/convert niet (meer) beschikbaar is op de nieuwe omgeving OF dat je webhost het uitvoeren van externe programma's niet toestaat OF dat /usr/bin/convert niet executable is of een combinatie van alle voorgaande punten.
EDIT: en ja, waar komen die variabelen vandaan, maar mogelijk was er meer code verwijderd uit dit fragment. Aangezien dit voorheen blijkbaar wel werkte.
Gewijzigd op 23/03/2016 15:19:18 door Thomas van den Heuvel
Het is opgelost ondertussen > Het klopt dat m'n code deels gepost was hier...
Ik schrijf en lees met de variabelen $foto1, $foto2. waarvan ik het path hier niet gezet had. Die $retval is in principe om nog geen output te generen (> /dev/null 2>&1)
MAAR in m'n scripts heb ik ook het path naar m'n Imagemagick in een var,
namelijk
dit omdat het path verschillend is op meerdere systemen /usr/bin/local/convert OF /usr/bin/convert OF/opt/bin/local/ ...
dus steek ik dit in mijn config settings.
MAAR dit werkt dus niet binnenin een function(), anders wel. Dus moet ik hier het path voluit gaan tikken voor dit script, en dan niet vergeten te wijzigen bij migratie naar een ander systeem. Heel vreemd dus...
Bij nader inzien blijkt dit zo ook te zijn op alle andere servers.
Deels opgelost dus, met een tweak. Maar weet nog steeds niet waarom het path via die var niet werkt in een function.... Zou ik graag weten, daar ik bezig ben met een app met vele classen etc. waarin Imagemagick vele taken zal uitvoeren.
Anyway, ben nieuw hier ;-)
een var die globaal bestaat, bestaat niet in het wereldje binnen de functie.
Handigste lijkt me, om de config te regelen met constanten:
dit zal het inderdaad zijn !!!
thx