PHP: Sestavovac� (kompila�n�) probl�my - Manual
PHP  
downloads | documentation | faq | getting help | mailing lists | | php.net sites | links | my php.net 
search for in the  
<InstalacePou��v�n� PHP>
view the version of this page
Last updated: Thu, 15 Jul 2004

Kapitola 51. Sestavovac� (kompila�n�) probl�my

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'.

Mus�te updatovat va�i verzi programu Bison. Nejnov�j�� verzi najdete na .

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 , 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 .

  • 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.



add a note add a note User Contributed Notes
Sestavovac� (kompila�n�) probl�my
dl927 at torfree dot net
12-Feb-2004 05:17
Compiling mod_php4 port on a clean freeBSD 4.8 install for Apache2 needed FOR_APACHE2= yes manually inserted into Makefile prior to version check.
tim at digicol dot de
24-Oct-2003 10:25
It seems to be very important to use the right version of bison - versions 1.28 and 1.875 should be OK, 1.75 (as delivered with SuSE Linux 8.2, for example) will not work (maybe depending on your configure options).

See:
dale at botkin dot org
04-Nov-2002 10:20
If you have customized your Apache to lie about its version number, you may need to edit configure to skip the version number check.  Just /APACHE_VERSION in configure to find the instance(s) where configure checks to make sure you have the right combination of --with-apxs or --with_apxs2 and Apache 1.3 or 2.0.  Assuming you're smart enough to remember which version of Apache you have, you can just delete or comment out the version check and continue to march.
jimsteele at nospam dot com
14-Oct-2001 08:43
Defining the right environment variables for my Apache "make" invocation allowed the correct "apxs" file to be generated for me.  Your mileage may vary.

cd ../apache_1.3.22
CFLAGS_SHLIB="-fpic -DSHARED_MODULE" \
  LD_SHLIB=gcc \
  LDFLAGS_MOD_SHLIB="-shared" \
  make

<InstalacePou��v�n� PHP>
 Last updated: Thu, 15 Jul 2004
show source | credits | sitemap | contact | advertising | mirror sites 
Copyright © 2001-2004 The PHP Group
All rights reserved.
This unofficial mirror is operated at: /
Last updated: Sun Nov 14 23:09:54 2004 Local time zone must be set--see zic manual page