om bepaalde foto's die goedgekeurd zijn voor plaatsing te verkleinen, heb ik een script geschreven dat hier voor zorgt.

als ik het aanroep op de adresbalk, dan doet ie het perfect en zonder errors.
Als ik het in de exec functie zet, dan geeft hij twee errors:


[21-Oct-2006 08:04:12] PHP Warning: Zend Optimizer does not support this version of PHP - please upgrade to the latest version of Zend Optimizer in Unknown on line 0

[21-Oct-2006 08:04:12] PHP Fatal error: Call to undefined function: imagecreatetruecolor() in validate_size.php on line 20

om te checken of de exec() wel wat doet, heb ik buiten de while lus een andere actie gedaan, namelijk dat hij de status in de database van deze foto's aanpast. Dat werkte wel.

dit is de code van validate_size.php:

<?
include("scripts/php/cfg.php");

//deze actie is om te kijken of de exec wel wat uitvoert...
mysql_query("UPDATE db_pictures SET valid_size = '0'");

$picture_sql = mysql_query("SELECT file FROM db_pictures WHERE approved = '1'");
while($picture = mysql_fetch_array($picture_sql)){

$icon = "pictures/".$picture["file"];
$aData = getimagesize($icon);
$iSizeX = $aData[0];
$iSizeY = $aData[1];

if($iSizeX < $iSizeY){
$imgDest = imagecreatetruecolor(200, 300);
$imgSrc = imagecreatefromjpeg($icon);
imagecopyresampled($imgDest, $imgSrc, 0, 0, 0, 0, 200, 300, $iSizeX, $iSizeY);
}
else {
$imgDest = imagecreatetruecolor(250, 166);
$imgSrc = imagecreatefromjpeg($icon);
imagecopyresampled($imgDest, $imgSrc, 0, 0, 0, 0, 250, 166, $iSizeX, $iSizeY);
}
imagejpeg($imgDest, $_SERVER["DOCUMENT_ROOT"]. "/ebox/icons/" .$picture["file"], 100);

}
?>

dit script hierboven werkt zonder errors (error reporting op all staan), maar eenmaal via exec geladen niet meer...
en zo roep ik m aan:

<?
exec('/usr/local/bin/php -q /home/eutosp48/public_html/map/validate_size.php > /dev/null &');
?>
Blijkbaar is je PHP-CLI installatie van een andere versie als die die je webserver gebruikt. In ieder geval heeft hij een andere configuratie.

En zo te zien is het een hele oude versie zelfs, want tegenwoordig zit libGD standaard ingebouwd, maar hier staat het blijkbaar niet bij geïnstalleerd.

Mogelijke oplossingen:
- Als je server nog ergens een andere php-cli heeft staan die wel actueel is die gebruiken.
- vragen/gaan voor een upgrade van php-cli
- als laatste redmiddel: via wget of lynx de pagina aanroepen op de webserver.
ok, ik zal een mail richting mijn provider sturen.

maar waarom werkt ie dan wel als ik m via de adresbalk aanroep?

bedankt voor de reply!
Omdat via de adresbalk je de PHP-module van je webserver aanspreekt. Dit kan heel goed een compleet andere PHP-installatie zijn die losstaat van de CLI-installatie (soort van stand-alone PHP, zonder webserver eraan vast gekoppeld)

Reageren