Problemy z PHP4

Dan Lukes dan at obluda.cz
Wed Oct 8 12:37:26 CEST 2003


Matej Kozub wrote:

 > s hrozou som zistil, ze sa mi nainstalovala verzia PHP4.3.4 RC1

	Na rozdil od kolegy Roberta ja vasi hruzu chapu. To, ze 4.3.4 RC1 
obsahuje pouze BUGFixy je sice pravda, ale co je treba dorict - ze je 
obsahuje vuci predchoi verzi coz byla nektera z BETA verzi verze 4.3.4. 
Je to tedy (spolecne s autory doufejme) STABILNEJSI ale nikoli STABILNI 
kod. Ostatne, i popis na WWW pomerne jasne uvadi, ze jde o testovaci verzi.

	To, jestli je ve vasem konkretnim pripade pouzit relativne stabilni 
4.3.3 se znamymi chybami nebo 4.3.4 RC1, kde jsou sice nektere opravene, 
ale nejde o dotestovany produkt a muze tedy mit tunu chyb jinych je 
rozhodnuti, ktere musite udelat (a take jste ho udelal) sam. Jednoznacna 
odpoved na to, co je spravnejsi, neexistuje.


> Nasledne som si do adresara /usr/ports/lang/php4 nakopiroval
> starsi port PHP 4.3.3 a urobil som toto:
> cd /usr/ports/lang/php4
> make install
> 
> Na moje velke prekvapenie som dostal takuto hlasku, s ktorou
> akosi neviem pohnut:
> 
> ===>  Applying FreeBSD patches for php4-4.3.3
> Ignoring previously applied (or reversed) patch.
> 1 out of 1 hunks ignored--saving rejects to pear/Makefile.frag.rej
> 
>>>Patch patch-pear__Makefile.frag failed to apply cleanly.
>>>Patch(es) patch-configure patch-ext::gd::gd.c patch-ext::gd::gd_ctx.c


	Ne takhle to opravdu nejde ... ;-)

	System "ports" obsahuje pro ruzne externi zdrojaky (a i pro PHP) sadu 
patchu, ktere se na stazene drojaky pred kompilaci aplikuji. V mnoha 
pripadech se tim fakticky meni jen adresare do kterych se aplikace bude 
instalovat, pripadne adresar, kde bude hledat konfiguraci pripadne 
optiony gcc pouzite pri kompilaci, nicmene, obecne mohou takove patche 
obsahovat prakticky jakekoliv zmeny.

	Neni prekvapujici, ze tyto patche jsou "version specific" a nemusi 
spravne fungovat na jinych verzich souboru, nez pro ktery jsou urceny. 
Popravde receno, to je ten optimistictejsi scenar - horsi situace 
nastane, kdyz se patch aplikovat podari, jenze okolnosti v kodu jsou u 
jine verze jine a ono to pak dela neco uplne nesmyslneho.


	Pokud nejste schopen obnovit takovy obsah adresare 
/usr/ports/lang/php4, ktery stahoval a prekladal jeste 4.3.3 a nenajdete 
ani hotovy prelozeny package (neb o vam nevyhovuje s jakymi optiony byl 
prelozen) pak zbyva prakticky uz jen jedina moznost - preloit si PHP e 
zdrojovych kodu bez pomoci "ports" systemu.

	Popravde receno, delam to tak uz leta a neni to tak strasne, jak to 
vypada. Odmenou vam bude jemnejsi moznost ovlivnovani nastaveni pri 
prekladu. Je sice pravda, ze radek

./configure  --with-apache=../apache_1.3.28 --enable-track-vars 
--enable-memory-limit --disable-short-tags --with-zlib --with-bz2 
--with-gd --enable-gd-native-ttf --with-imap --with-imap-ssl 
--with-openssl --with-jpeg-dir=/usr/local/lib 
--with-png-dir=/usr/local/lib --with-tiff-dir --with-xpm-dir 
--enable-dba --with-ndbm --enable-ftp --with-freetype-dir --with-gettext 
--with-iconv=/usr/local --with-mysql --with-snmp --enable-ucd-snmp-hack 
--enable-sysvmsg --enable-sysvsem --enable-sysvshm

... vypada ponekud hruzostrasne, ale treba u vas bude vypadat lepe ...

	Pokud by vam jeho sestaveni delalo problemu, porad muzete v PORTech 
nechat nakonfigurovat onu 4.3.4 RC1 a pak se podivat do souboru 
config.status, kde bude uvedeno s jakymi parametry byl "configure" volan 
a zavolat to se stejnymi i v adresari, kde mate 4.3.3 ...


							Dan





More information about the Users-l mailing list