Manußl PHP | ||
---|---|---|
P°edchßzejφcφ | Dal╣φ |
Tato Φßst se zab²vß Φast²mi otßzkamni ohledn∞ zp∙sobu instalace PHP. PHP je dostupnΘ pro v∞t╣inu OS (v podstat∞ krom∞ MacOS p°e OSX) a v∞t╣inu webovsk²ch server∙.
P°i instalaci PHP postupujte podle instrukcφ v souboru INSTALL v p°φslu╣nΘ distribuci. U╛ivatelΘ Windows by si takΘ m∞li p°eΦφst soubor install.txt. Existuje takΘ soubor s r∙zn²mi fintami pro Windows - najdete ho tady.
[mybox:user /src/php4] root# apachectl configtest apachectl: /usr/local/apache/bin/httpd Undefined symbols: _compress _uncompress |
cgi error: The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are: |
V UNIXu mß b²t implicitn∞ v adresß°i /usr/local/lib. Mnoho lidφ to bude chtφt p°i kompilaci zm∞nit pomocφ parametru --with-config-file-path. Mohli byste ho, nap°φklad, nastavit zhruba takto:
--with-config-file-path=/etc |
Pod Windows je soubor php.ini implicint∞ umφst∞n v adresß°i systΘmu Windows.
2. UNIX: Nainstaloval jsem PHP, ale v╛dy, kdy╛ naΦφtßm dokument, dostanu zprßvu 'Document Contains No Data'! O co jde?
Pravd∞pobn∞ to znamenß, ╛e PHP mß n∞jak² problΘm a padß. Podφvejte se do protokolu chyb, zda se jednß o tento p°φpad a pak zkuste problΘm reprodukovat mal²m testem. Pokud vφte, jak pou╛φvat 'gdb', velmi pom∙╛e, kdy╛ m∙╛ete s va╣φm hlß╣enφm chyby poskytnout v²pis (backtrace). V²vojß°i tak mohou snadn∞ji lokalizovat problΘm. Pou╛φvßte-li PHP jako modul do serveru Apache, zkuste n∞co jako:
Zastavte httpd procesy
gdb httpd
Zastavte httpd procesy
> run -X -f /path/to/httpd.conf
Potom naΦt∞te do prohlφ╛eΦe URL, kde se vyskytl problΘm
> run -X -f /path/to/httpd.conf
Dostanete-li core dump (PHP spadne), gdb by vßs o tom m∞l informovat
napi╣te: bt
Zφskan² v²pis (backtrace) byste m∞li p°ilo╛it k hlß╣enφ chyby. To by se m∞lo poslat na http://bugs.php.net/
Pokud vß╣ skript pou╛φvß funkce pro regulßrnφ v²razy (ereg() a dal╣φ), m∞li byste se ujistit, ╛e jste zkompilovali PHP a Apache se stejn²m balφΦkem pro regulßrnφ v²razy. S PHP a Apachem 1.3.x by se to m∞lo dφt automaticky.
Za p°edpokladu, ╛e se obojφ, jak Apache, tak PHP, instalovalo z balφΦk∙ RPM, bude t°eba "odkomentovat" nebo p°idat do souboru http.conf n∞kterΘ z nßsledujφcφch °ßdk∙ (nebo v╣echny):
# Extra Modules AddModule mod_php.c AddModule mod_php3.c AddModule mod_perl.c # Extra Modules LoadModule php_module modules/mod_php.so LoadModule php3_module modules/libphp3.so /* pro PHP 3 */ LoadModule php4_module modules/libphp4.so /* pro PHP 4 */ LoadModule perl_module modules/libperl.so |
AddType application/x-httpd-php3 .php3 /* pro PHP 3 */ AddType application/x-httpd-php .php /* pro PHP 4 */ |
4. UNIX: Instaloval jsem PHP 3 z balφΦk∙ RPM, ale nekompiluje se s podporou databßze, kterou pot°ebuji! O co tu jde?
Kv∙li tomu, jak se PHP 3 budovalo, nenφ snadnΘ sestavit kompletnφ flexibilnφ RPM balφΦek s PHP. ProblΘm je vy°e╣en v PHP 4. Pro PHP 3 nynφ doporuΦujeme pou╛φvat mechanismus popsan² v souboru INSTALL.REDHAT v distribuci PHP. Pokud trvßte na pou╛itφ RPM verze PHP 3, Φt∞te dßl...
RPM pakovaΦe jsou nastaveny na tvorbu RPM balφΦk∙ k instalaci bez podpory databßzφ kv∙li zjednodu╣enφ instalacφ a proto, ╛e RPM pou╛φvß adresß° /usr/ namφsto standardnφho /usr/local/. Musφt sd∞lit RPM souboru spec, kterΘ databßze podporovat a umφst∞nφ adresß°e nejvy╣╣φ ·rovn∞ databßzovΘho serveru.
Tento p°φklad vysv∞tluje proces p°idßnφ podpory populßrnφho databßzovΘho serveru MySQL, pro instalaci PHP jako modulu do Apache.
V╣echny tyto informace smaoz°ejm∞ mohou b²t upraveny pro libovoln² databßzov² server, kter² PHP podporuje. Pro tento p°φklad budeme p°edpoklßdat, ╛e jste instalovali MySQL a Apache pln∞ z balφΦk∙ RPM.
Nejd°φve odstra≥te mod_php3 :
rpm -e mod_php3 |
Potom vezm∞te zdrojov² balφΦek RPM a spus╗te na n∞m, NE --rebuild
rpm -Uvh mod_php3-3.0.5-2.src.rpm |
Upravte soubor /usr/src/redhat/SPECS/mod_php3.spec
V sekci %build p°idejte databßzovou podporu, kterou chcete, a nastavte cestu.
Pro MySQL byste p°idali
--with-mysql=/usr \ |
./configure --prefix=/usr \ --with-apxs=/usr/sbin/apxs \ --with-config-file-path=/usr/lib \ --enable-debug=no \ --enable-safe-mode \ --with-exec-dir=/usr/bin \ --with-mysql=/usr \ --with-system-regex |
PotΘ, co jsou provedeny tyto zm∞ny, zkompilujte balφΦek takto:
rpm -bb /usr/src/redhat/SPECS/mod_php3.spec |
Potom balφΦek nainstalujte:
rpm -ivh /usr/src/redhat/RPMS/i386/mod_php3-3.0.5-2.i386.rpm |
5. UNIX: P°idal jsem do Apache patch pro FrontPage Extension a PHP nßhle p°estalo pracovat. Je PHP nekompatibilnφ s FrontPage Extension pro Apache?
Ne, PHP pracuje dob°e i s FrontPage Extension. ProblΘm je v tom, ╛e FrontPage patch modifikuje n∞kterΘ struktury Apache, na kterΘ PHP spolΘhß. P°ekompilovßnφ PHP (pou╛itφm 'make clean ; make') po instalaci FP patche by m∞lo problΘm vy°e╣it.
6. UNIX/Windows: Nainstaloval jsem PHP, ale p°i pokusu naΦφst soubor PHP skriptu do prohlφ╛eΦe se zobrazφ pouze prßzdnß obrazovka.
V prohlφ╛eΦi vyberte funkci 'zobrazit zdrojov² k≤d', nejspφ╣ uvidφte zdrojov² k≤d va╣eho PHP skriptu. To znamenß, ╛e server neposφlß skript k interpretaci. Chyba je n∞kde v konfiguraci serveru - rad∞ji dvakrßt zkontrolujte konfiguraci podle instrukcφ k instalaci PHP.
7. UNIX/Windows: Nainstaloval jsem PHP a kdy╛ chci naΦφst PHP soubor do prohlφ╛eΦe, objevφ se "500 Internal Server Error".
P°i pokusu spustit PHP do╣lo k n∞jakΘ chyb∞. Abyste vid∞li detailn∞j╣φ chybovou zprßvu, z p°φkazovΘ °ßdky, p°ejd∞te do adresß°e se souborem PHP (pod Windows php.exe) a spus╗te php -i. Pokud p°i b∞hu PHP dojde k chyb∞, bude zobrazena odpovφdajφcφ chybovou zprßva, kterß vßm °ekne, co se mß dßl ud∞lat. Pokud zφskßte obrazovku plnou HTML k≤du (v²stup funkce phpinfo()), pak PHP funguje a vß╣ problΘm m∙╛e souviset s konfiguracφ serveru, kterou je pak t°eba dob°e zkontrolovat.
8. N∞kterΘ operaΦnφ systΘmy: Nainstaloval jsem PHP bez chyb, ale nynφ, kdy╛ zkusφm spustit Apache, ohlßsφ se chyby o nedefinovan²ch symbolech:
[mybox:user /src/php4] root# apachectl configtest apachectl: /usr/local/apache/bin/httpd Undefined symbols: _compress _uncompress |
To aktußln∞ nemß nic spoleΦnΘho s PHP, ale s knihovnami klienta MySQL. N∞kterΘ pot°ebujφ --with-zlib, jinΘ nikoli. Tφmto se zab²vß takΘ MySQL FAQ.
9. Windows: Nainstaloval jsem PHP, ale p°i naΦtenφ strßnky do prohlφ╛eΦe se zobrazφ chyba:
cgi error: The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are: |
Tato chybovß zprßva znamenß, ╛e z PHP nemohou vychßzet ╛ßdnß data. Abyste vid∞li detailn∞j╣φ chybovou zprßvu, z p°φkazovΘ °ßdky, p°ejd∞te do adresß°e se souborem PHP (pod Windows php.exe) a spus╗te php -i. Pokud p°i b∞hu PHP dojde k chyb∞, bude zobrazena odpovφdajφcφ chybovou zprßva, kterß vßm °ekne, co se mß dßl ud∞lat. Pokud zφskßte obrazovku plnou HTML k≤du (v²stup funkce phpinfo()), PHP funguje.
Jestli╛e PHP pracuje v p°φkazovΘ °ßdce, zkuste to znovu z prohlφ╛eΦe. Pokud to stßle nefunguje, m∙╛e to b²t jednφm z t∞chto d∙vod∙:
Nastavenφ p°φstupov²ch prßv k souboru se skriptem, k php.exe, php4ts.dll, php.ini nebo n∞jakΘmu roz╣φ°enφ PHP, kterΘ se pokou╣φte naΦφst, je takovΘ, ╛e k nim anonymnφ internetov² u╛ivatel ISUR_<machinename> nemß p°φstup.
Soubor se skriptem neexistuje (nebo p°φpadn∞ nenφ tam, kde si myslφte, ╛e je, relativn∞ ke ko°enovΘmu adresß°i webu). Uv∞domte si, ╛e na IIS m∙╛ete tuto chybu zachytit za╣krtnutφm volby 'check file exists' p°i nastavovßnφ skriptov²ch slu╛eb v Internet Services Manageru. Pokud skript neexistuje, server vrßtφ chybu 404. Dal╣φ v²hodou je to, ╛e IIS provede na souboru se skriptem v╣echny pot°ebnΘ autentikace zalo╛enΘ NTLanMan.
Ujist∞te se, ╛e ka╛d² u╛ivatel, kter² pot°ebuje spou╣t∞t PHP skripty mß prßva pro spou╣t∞nφ php.exe! IIS pou╛φvß anonymnφho u╛ivatele, kter² se p°idß p°i instalaci IIS. Tento u╛ivatel pot°ebuje prßva k php.exe. TakΘ ka╛d² autentikovan² u╛ivatel bude pot°ebovat prßva na spou╣t∞nφ php.exe. A IIS4 musφte sd∞lit, ╛e PHP je skriptovacφ engine.
P°edchßzejφcφ | Dom∙ | Dal╣φ |
Zßle╛itosti databßzφ | Nahoru | Sestavovacφ (kompilaΦnφ) problΘmy |