|
Tato sekce shrnuje nejΦast∞j╣φ chyby, kterΘ se vyskytujφ p°i sestavovßnφ
PHP.
- 1.
Pomocφ anonymnφho p°φstupu do CVS jsem zφskal poslednφ verzi PHP,
ale chybφ v nφ skript "configure"!
- 2.
Mßm problΘm nakonfigurovat PHP tak, aby fungovalo se serverem Apache.
Hlßsφ, ╛e nem∙╛e najφt httpd.h, ale ten je p°esn∞ tam, kde jsem uvedl,
╛e je!
- 3.
Kdy╛ spustφm "configure", hlßsφ to, ╛e nem∙╛e najφt "include" soubory
nebo knihovny pro GD, gdbm a n∞jakΘ dal╣φ balφky!
- 4.
Kdy╛ se kompiluje soubor language-parser.tab.c, hlßsφ to chyby, kterΘ
°φkajφ 'yytname undeclared'.
- 5.
Kdy╛ spustφm "make", zdß se, ╛e b∞╛φ dob°e, ale havaruje, kdy╛ se
pokou╣φ sestavit koneΦnou aplikaci s hlß╣enφm, ╛e nem∙╛e najφt
n∞jakΘ soubory.
- 6.
P°i sestavovßnφ PHP to hlßsφ mnoho nedefinovan²ch referencφ.
- 7.
Nep°i╣el jsem na to, jak sestavit PHP pro Apache 1.3.
- 8.
Postupoval jsem p°esn∞ podle instrukcφ k instalaci PHP ve verzi jako
modul pro Apache na UNIXu, a moje PHP skripty se zobrazujφ v prohlφ╛eΦi
nebo se je prohlφ╛eΦ sna╛φ ulo╛it jako soubory.
- 9.
Hlßsφ to pou╛itφ
--activate-module=src/modules/php4/libphp4.a,
ale tento soubor neexistuje; proto jsem to zm∞nil na
--activate-module=src/modules/php4/libmodphp4.a a
ono to nefunguje? O co jde?
- 10.
Kdy╛ zkusφm sestavit Apache s PHP jako╛to statick²m modulem pomocφ
--activate-module=src/modules/php4/libphp4.a,
hlßsφ to, ╛e m∙j kompilßtor nevyhovuje ANSI.
- 11.
Kdy╛ zkusφm sestavit PHP s parametrem --with-apxs,
dostanu zßhadnΘ chybovΘ zprßvy.
- 12.
During 'make', I get errors in microtime, and a lot of 'RUSAGE_' stuff.
- 13.
Chci upgradovat svΘ PHP. Kde najdu tvar °ßdku
./configure, kter² byl pou╛it pro sestavenφ stßvajφcφ
instalace PHP?
1.
Pomocφ anonymnφho p°φstupu do CVS jsem zφskal poslednφ verzi PHP,
ale chybφ v nφ skript "configure"!
Musφte mφt nainstalovan² balφk "GNU autoconf", tak╛e m∙╛ete vygenerovat
skript "configure" z "configure.in". Po sta╛enφ zdrojov²ch soubor∙
z CVS serveru spus╗te ./buildconf z nejvy╣╣φ
adresß°ovΘ ·rovn∞ (pokud nespustφte "configure" s parametrem
--enable-maintainer-mode, skript "configure"
nebude automaticky aktualizovßn p°i zm∞n∞ souboru "configure.in",
tak╛e se musφte ujistit, zda jste to ud∞lali ruΦn∞ potΘ, co byl
"configure.in" zm∞n∞n. Jednφm z p°φznak∙ tohoto je nalezenφ element∙
jako @VARIABLE@ v souboru "Makefile" potom, co byl spu╣t∞n "configure"
nebo "config.status").
2.
Mßm problΘm nakonfigurovat PHP tak, aby fungovalo se serverem Apache.
Hlßsφ, ╛e nem∙╛e najφt httpd.h, ale ten je p°esn∞ tam, kde jsem uvedl,
╛e je!
Pot°ebujete sd∞lit konfiguraΦnφmu/instalaΦnφmu skriptu umφst∞nφ
nejvy╣╣φ ·rovn∞ zdrojov²ch soubor∙ Apache. To znamenß, ╛e specifikujete
'--with-apache=/path/to/apache'
a ne
'--with-apache=/path/to/apache/src'.
3.
Kdy╛ spustφm "configure", hlßsφ to, ╛e nem∙╛e najφt "include" soubory
nebo knihovny pro GD, gdbm a n∞jakΘ dal╣φ balφky!
M∙╛ete urΦit, aby skript "configure" hledal hlaviΦkovΘ soubory a
knihovny na nestandardnφch mφstech specifikacφ pomocn²ch p°φznak∙ pro
C preprocesor a linker, nap°φklad:
CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure |
Pokud pou╛φvßte csh (C-shell) jako vß╣ login shell (proΦ?), bylo by to:
env CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure |
4.
Kdy╛ se kompiluje soubor language-parser.tab.c, hlßsφ to chyby, kterΘ
°φkajφ 'yytname undeclared'.
5.
Kdy╛ spustφm "make", zdß se, ╛e b∞╛φ dob°e, ale havaruje, kdy╛ se
pokou╣φ sestavit koneΦnou aplikaci s hlß╣enφm, ╛e nem∙╛e najφt
n∞jakΘ soubory.
N∞kterΘ star╣φ verze programu "make" neuklßdajφ korektn∞ zkompilovanΘ
verze soubor∙ umφst∞n²ch v adresß°i funkcφ do tΘho╛ adresß°e. Zkuste
spustit "cp *.o functions" a potom znovu
'make', abyste vid∞li, zda to pomohlo. Pokud ano,
m∞li byste opravdu nainstalovat nejnov∞j╣φ verzi "GNU make".
6.
P°i sestavovßnφ PHP to hlßsφ mnoho nedefinovan²ch referencφ.
Podφvejte se do °ßdku, kde je popsßno sestavovßnφ a ujist∞te se,
╛e byly p°idßny na konec v╣echny pot°ebnΘ knihovny. ╚asto se stßvß,
╛e chybφ '-ldl' a n∞kterΘ knihovny pot°ebnΘ pro podporu databßze, kterou
jste urΦili.
Pokud sestavujete pro Apache 1.2.x, nezapomn∞li jste p°idat odpovφdajφcφ
informace na °ßdek EXTRA_LIBS v souboru "configure" a spustit skript
pro konfiguraci Apache? Pro vφce informacφ se podφvejte do souboru
INSTALL, kter² zφskßte
s distribuΦnφm balφkem.
N∞kte°φ lidΘ takΘ hlßsili, ╛e pokud sestavovali pro Apache, museli
p°idat '-ldl' t∞sn∞ za 'libphp4.a'.
7.
Nep°i╣el jsem na to, jak sestavit PHP pro Apache 1.3.
Toto je nynφ velmi snadnΘ. Nßsledujte peΦliv∞ tyto kroky:
Stßhn∞te nejnov∞j╣φ distribuci Apache 1.3 z
http://www.apache.org/dist/.
Rozbalte ji n∞kam, nap°φklad do
/usr/local/src/apache-1.3.
Zkompilujte PHP nejd°φve spu╣t∞nφm
./configure --with-apache=/<path>/apache-1.3
(nahra∩te <path> aktußlnφ cestou k adresß°i apache-1.3).
Napi╣te 'make' a potom 'make install'
k sestavenφ PHP a zkopφrovßnφ pot°ebn²ch soubor∙ do distribuΦnφho
stromu Apache.
Zm∞≥te adresß° na /<path>/apache-1.3/src
a upravte soubor Configuration.
Do souboru p°idejte:
AddModule modules/php4/libphp4.a.
Spus╗te './Configure' a potom
'make'.
Nynφ byste m∞li mφst hotovΘ soubory httpd pro prßci s PHP.
Poznßmka: : M∙╛ete pou╛φt takΘ nov² skript
./configure pro Apache. P°eΦt∞te si instrukce v
README.configure, kter² je v distribuci Apache.
NahlΘdn∞te takΘ do souboru INSTALL
z distribuce PHP.
8.
Postupoval jsem p°esn∞ podle instrukcφ k instalaci PHP ve verzi jako
modul pro Apache na UNIXu, a moje PHP skripty se zobrazujφ v prohlφ╛eΦi
nebo se je prohlφ╛eΦ sna╛φ ulo╛it jako soubory.
To znamenß, ╛e PHP modul nenφ z n∞jak²ch d∙vod∙ vyvolßvßn. D°φve,
ne╛ budete shßn∞t dal╣φ pomoc, zkontrolujte t°i v∞ci:
Ujist∞te se, ╛e se spou╣tφ prßv∞ ten httpd, kter² jste
zkompilovali. Zkuste spustit
/path/to/binary/httpd -l
Pokud v seznamu neuvidφte mod_php4.c,
potom nespou╣tφte sprßvnou verzi httpd. Najd∞te s instalujte sprßvnou
verzi.
Ujist∞te se, ╛e jste p°idali sprßvnou specifikaci Mime Type do
soubor∙ .confpro Apache. M∞lo by tam b²t:
AddType application/x-httpd-php3 .php3 (pro PHP 3)
nebo AddType application/x-httpd-php .php (pro PHP 4)
TakΘ se ujist∞te, ╛e tento °ßdek AddType nenφ ukryt uvnit° bloku
<Virtualhost> nebo <Directory>, co╛ m∙╛e zabrßnit
aplikaci pravidla na oblast, kde je umφst∞n testovacφ skript.
KoneΦn∞, implicitnφ umφst∞nφ konfiguraΦnφch soubor∙ Apache se
mezi verzemi Apache 1.2 a 1.3 zm∞nilo. M∞li byste ov∞°it, ╛e
soubor, do kterΘho jste p°idali °ßdek AddType je ten, kter² je
skuteΦn∞ naΦφtßn. M∙╛ete zkusit vlo╛it n∞jakou p°φ╣ernou syntaktickou
chybu do souboru httpd.conf nebo ud∞lat n∞jakou jinou zm∞nu tohoto
rßzu - uvidφte, zda je soubor sprßvn∞ naΦφtßn.
9.
Hlßsφ to pou╛itφ
--activate-module=src/modules/php4/libphp4.a,
ale tento soubor neexistuje; proto jsem to zm∞nil na
--activate-module=src/modules/php4/libmodphp4.a a
ono to nefunguje? O co jde?
Uv∞domte si, ╛e soubor libphp4.a nemß existovat. Vytvß°φ ho proces
serveru Apache!
10.
Kdy╛ zkusφm sestavit Apache s PHP jako╛to statick²m modulem pomocφ
--activate-module=src/modules/php4/libphp4.a,
hlßsφ to, ╛e m∙j kompilßtor nevyhovuje ANSI.
Toto je zavßd∞jφcφ chybovΘ hlß╣enφ, kterΘ bylo odstran∞no v pozd∞j╣φch
verzφch.
11.
Kdy╛ zkusφm sestavit PHP s parametrem --with-apxs,
dostanu zßhadnΘ chybovΘ zprßvy.
Je t°eba zkontrolovat t°i v∞ci. Nejd°φve, z d∙vodu, ╛e kdy╛ Apache
vytvß°φ apxs skript v Perlu, n∞kdy ukonΦφ kompilaci bez odpovφdajφcφch
prom∞nn²ch. Najd∞te skript apxs (zkuste p°φkaz 'which apxs', n∞kdy
b²vß v /usr/local/apache/bin/apxs nebo /usr/sbin/apxs). Otev°te ho
a zkontrolujte °ßdky podobnΘ t∞mto:
my $CFG_CFLAGS_SHLIB = 'á'; # nahrazeno pomocφ Makefile.tmpl
my $CFG_LD_SHLIB = 'á'; # nahrazeno pomocφ Makefile.tmpl
my $CFG_LDFLAGS_SHLIB = 'á'; # nahrazeno pomocφ Makefile.tmpl |
Pokud vidφte toto, na╣li jste ten problΘm. Mohou se tam vyskytovat
mezery nebo jinΘ nekorektnφ hodnoty, nap°. 'q()'. Zm∞≥te °ßdky
takto:
my $CFG_CFLAGS_SHLIB = '-fpic -DSHARED_MODULE'; # substituted via Makefile.tmpl
my $CFG_LD_SHLIB = 'gcc'; # nahrazeno pomocφ Makefile.tmpl
my $CFG_LDFLAGS_SHLIB = q(-shared); # nahrazeno pomocφ Makefile.tmpl |
Druh² mo╛n² problΘm by m∞l vyskytovat pouze na Red Hat Linuxu 6.1
a 6.2. Skript apxs v t∞chto distribucφch Red Hat je po╣kozen².
Najd∞te °ßdek
my $CFG_LIBEXECDIR = 'modules'; # nahrazeno pomocφ APACI install |
Pokud vidφte v²╣e uveden² °ßdek, nahra∩te ho tφmto:
my $CFG_LIBEXECDIR = '/usr/lib/apache'; # nahrazeno pomocφ APACI install |
Nakonec, kdy╛ budete p°einstalovßvat Apache, za°a∩te 'make clean'
mezi './configure' a 'make'.
12.
During 'make', I get errors in microtime, and a lot of 'RUSAGE_' stuff.
During the 'make' portion of installation, if you encounter problems
that look similar to this:
microtime.c: In function `php_if_getrusage':
microtime.c:94: storage size of `usg' isn't known
microtime.c:97: `RUSAGE_SELF' undeclared (first use in this function)
microtime.c:97: (Each undeclared identifier is reported only once
microtime.c:97: for each function it appears in.)
microtime.c:103: `RUSAGE_CHILDREN' undeclared (first use in this function)
make[3]: *** [microtime.lo] Error 1
make[3]: Leaving directory `/home/master/php-4.0.1/ext/standard'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/master/php-4.0.1/ext/standard'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/master/php-4.0.1/ext'
make: *** [all-recursive] Error 1 |
Vß╣ systΘm je po╣kozen. Musφte opravit soubory v /usr/include instalacφ
balφku glibc-devel, kter² pat°φ k va╣emu glibc. Nemß to absolutn∞ nic
spoleΦnΘho s PHP. D∙kaz zφskßte tφmto jednoduch²m testem:
$ cat >test.c <<X
#include <sys/resource.h>
X
$ gcc -E test.c >/dev/null |
Pokud se objevφ chyby, ve va╣ich hlaviΦkov²ch souborech panuje chaos.
13.
Chci upgradovat svΘ PHP. Kde najdu tvar °ßdku
./configure, kter² byl pou╛it pro sestavenφ stßvajφcφ
instalace PHP?
Kdy╛ se podφvßte do souboru config.nice ve zdrojovΘm stromu souΦasnΘ
instalace PHP. Nenφ-li k dispozici, jednodu╣e spus╗te skript
Naho°e ve v²pisu najdete °ßdek ./configure, kter² byl
pou╛it p°i sestavovßnφ stßvajφcφ instalace.
| |