Mistä mahtaa johtua, erttä tämä php.netistä poimittu skiripti toimii minun kotikoneellani (php 4.4.4), mutta ei int2000:ssa (php 4.4.2)
<html> <head> </head> <body> <?php $pic=ImageCreate(600,600); $col1=ImageColorAllocate($pic,200,200,200); $col2=ImageColorAllocate($pic,0,0,255); ImageFilledRectangle($pic,1,1,100,100,$col2); ImagePNG($pic,"pic.png"); ImageDestroy($pic); ?> <img src="pic.png" border=0> </body> </html>
Miten toimimattomuus ilmenee? Löytyykö GD-kirjasto? Onko kirjoitusoikeudet hakemistoon?
Ilmeisesti int2000:ssa on gd-kirjasto, koska toiset skriptit toimii, toiset ei. Tuo herjaa int2000:ssa näitä rivejä:
ImagePNG($pic,"pic.png"); ImageDestroy($pic);
ei luo kuvatiedostoa.
Kotikoneellani toimii hyvin.
Kirjoitusoikeudet on.
Mitä skripti herjaa?
Warning: imagepng(): Unable to open 'pic.png' for writing in /www/int2000/a/10507/html/img3.php on line 11
Tällä hetkellä tätä. Itse arvelin, että vika on functiossa ImageColorAllocate, sillä kun testailin jotain muuta itse tekemääni skriptiä laittamalla jokaisen function perään or die tarkistuksen, niin se tulosti virheilmoituksen, joka oli ensimmäisen imagecolorallocate-funktion perässä.
Teki muuten saman omalla koneellani, mutta kun otin tuo tarkistuksen pois, niin omalla koneella alkoi toimia, in2000:ssa ei. Voiko käyttöjärjestelmien erilaisuus vaikuttaa tuohon toimivuuteen (windows:toimii/unix:ei).
Entä gd-kirjasto? Itse olen ottanut sen käyttöön tekemällä muutoksia php.ini-tiedostoon. Onko php:n mukana tuleva laajennus tarpeeksi tehokas vai pitäisikö ladata isompi paketti?
Tarkistapa ensin kirjoitusoikeudet kyseiseen hakemistoon.
edit:
oho, se olikin siellä, noh "Double check". ;)
Kokeile myös imagepng(...) (pienellä), sekä varmuuden vuoksi imagejpeg(...).
Vähän jännä juttu. Kun asetin kotisivun juuren yläpuoliselle html-hakemistolle täydet oikeudet (en tiedä onko tuo kovin suotavaa), niin toimii.
Mutta jos taas laitan seuraavat tarkistukset:
$pic=ImageCreate(600,600)or die("ImageCreate ei toimi"); $col1=ImageColorAllocate($pic,200,200,200) or die("ImageColorAllocate ei toimi"); $col2=ImageColorAllocate($pic,0,0,255); ImageFilledRectangle($pic,1,1,100,100,$col2); ImagePNG($pic,"pic.png")or die("ImagePng ei toimi");
tulostaa:
"ImageColorAllocate ei toimi"
Nyt tämä muuten täsmää täysin sitä, miten se toimii myös kotikoneella eli noita funktion toimivuus-tarkistuksia ei suvaita.
Lebe80 kirjoitti:
Kokeile myös imagepng(...) (pienellä), sekä varmuuden vuoksi imagejpeg(...).
Minkä ihmeen takia? Virhehän jo kertoo että se funktio on olemassa, mutta se ei vaan voi avata sitä tiedostoa.
Ja PHP:ssä funktioiden nimissä ei ole väliä kirjainkoolla.
Pekka Mansikka kirjoitti:
Vähän jännä juttu. Kun asetin kotisivun juuren yläpuoliselle html-hakemistolle täydet oikeudet (en tiedä onko tuo kovin suotavaa), niin toimii.
Mutta jos taas laitan seuraavat tarkistukset:$pic=ImageCreate(600,600)or die("ImageCreate ei toimi"); $col1=ImageColorAllocate($pic,200,200,200) or die("ImageColorAllocate ei toimi"); $col2=ImageColorAllocate($pic,0,0,255); ImageFilledRectangle($pic,1,1,100,100,$col2); ImagePNG($pic,"pic.png")or die("ImagePng ei toimi");tulostaa:
"ImageColorAllocate ei toimi"
Samantapainen juttu oli itselläni rename():n kanssa.
Kaikki or die():t ja if ($joku == false) pois tuosta kohdasta, niin toimii, vaikka saattaa silti tulostaa muutaman warningin / noticen.
Katso peiliin tarkasti.. pyöri 7 kertaa ympäri pyöritä silmiä samalla.. hyppää ja nuolase nenää.. ja sano abraga dabra... sen jälkeen voit todeta että olet vieläkin ruma!
Aihe on jo aika vanha, joten et voi enää vastata siihen.