luk Tue Mar 5 18:03:32 2002 EDT
Added files:
/phpdoc/cs/faq build.xml
Log:
Index: phpdoc/cs/faq/build.xml
+++ phpdoc/cs/faq/build.xml
<?xml version="1.0" encoding="iso-8859-2"?>
<chapter id="faq.build">
<title>Sestavovac� (kompila�n�) probl�my</title>
<titleabbrev>Sestavovac� (kompila�n�) probl�my</titleabbrev>
<para>
Tato sekce shrnuje nej�ast�j�� chyby, kter� se vyskytuj� p�i sestavov�n�
PHP.
</para>
<qandaset>
<qandaentry id="faq.build.configure">
<question>
<para>
Pomoc� anonymn�ho p��stupu do CVS jsem z�skal posledn� verzi PHP,
ale chyb� v n� skript "configure"!
</para>
</question>
<answer>
<para>
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 <command>./buildconf</command> z nejvy���
adres��ov� �rovn� (pokud nespust�te "configure" s parametrem
<literal>--enable-maintainer-mode</literal>, 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").
</para>
</answer>
</qandaentry>
<qandaentry id="faq.build.configuring">
<question>
<para>
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!
</para>
</question>
<answer>
<para>
Pot�ebujete sd�lit konfigura�n�mu/instala�n�mu skriptu um�st�n�
nejvy��� �rovn� zdrojov�ch soubor� Apache. To znamen�, �e specifikujete
'<literal>--with-apache=/path/to/apache</literal>'
a <emphasis>ne</emphasis>
'<literal>--with-apache=/path/to/apache/src</literal>'.
</para>
</answer>
</qandaentry>
<qandaentry id="faq.build.not-found">
<question>
<para>
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!
</para>
</question>
<answer>
<para>
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:
<programlisting>
CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure
</programlisting>
Pokud pou��v�te csh (C-shell) jako v� login shell (pro�?), bylo by to:
<programlisting>
env CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure
</programlisting>
</para>
</answer>
</qandaentry>
<qandaentry id="faq.build.yytname">
<question>
<para>
Kdy� se kompiluje soubor language-parser.tab.c, hl�s� to chyby, kter�
��kaj� 'yytname undeclared'.
</para>
</question>
<answer>
<para>
Mus�te updatovat va�i verzi programu Bison. Nejnov�j�� verzi najdete
na <ulink url="&faqurl.bison;">&faqurl.bison;</ulink>.
</para>
</answer>
</qandaentry>
<qandaentry id="faq.build.link">
<question>
<para>
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.
</para>
</question>
<answer>
<para>
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 "<command>cp *.o functions</command>" a potom znovu
'<command>make</command>', abyste vid�li, zda to pomohlo. Pokud ano,
m�li byste opravdu nainstalovat nejnov�j�� verzi "GNU make".
</para>
</answer>
</qandaentry>
<qandaentry id="faq.build.undefined">
<question>
<para>
P�i sestavov�n� PHP to hl�s� mnoho nedefinovan�ch referenc�.
</para>
</question>
<answer>
<para>
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.
</para>
<para>
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
<ulink url="&faqurl.file.installation;">INSTALL</ulink>, kter� z�sk�te
s distribu�n�m bal�kem.
</para>
<para>
N�kte�� lid� tak� hl�sili, �e pokud sestavovali pro Apache, museli
p�idat '-ldl' t�sn� za '<filename>libphp4.a</filename>'.
</para>
</answer>
</qandaentry>
<qandaentry id="faq.build.Apache">
<question>
<para>
Nep�i�el jsem na to, jak sestavit PHP pro Apache 1.3.
</para>
</question>
<answer>
<para>
Toto je nyn� velmi snadn�. N�sledujte pe�liv� tyto kroky:
<itemizedlist>
<listitem>
<simpara>
St�hn�te nejnov�j�� distribuci Apache 1.3 z
<ulink url="&faqurl.apache;">&faqurl.apache;</ulink>.
</simpara>
</listitem>
<listitem>
<simpara>
Rozbalte ji n�kam, nap��klad do
<filename>/usr/local/src/apache-1.3</filename>.
</simpara>
</listitem>
<listitem>
<simpara>
Zkompilujte PHP nejd��ve spu�t�n�m
<command>./configure --with-apache=/<path>/apache-1.3</command>
(nahra�te <path> aktu�ln� cestou k adres��i apache-1.3).
</simpara>
</listitem>
<listitem>
<simpara>
Napi�te '<literal>make</literal>' a potom '<literal>make install</literal>'
k sestaven� PHP a zkop�rov�n� pot�ebn�ch soubor� do distribu�n�ho
stromu Apache.
</simpara>
</listitem>
<listitem>
<simpara>
Zm��te adres�� na <filename>/<path>/apache-1.3/src</filename>
a upravte soubor <filename>Configuration</filename>.
Do souboru p�idejte:
<literal>AddModule modules/php4/libphp4.a</literal>.
</simpara>
</listitem>
<listitem>
<simpara>
Spus�te '<command>./Configure</command>' a potom
'<literal>make</literal>'.
</simpara>
</listitem>
<listitem>
<simpara>
Nyn� byste m�li m�st hotov� soubory httpd pro pr�ci s PHP.
</simpara>
</listitem>
</itemizedlist>
</para>
<para>
<emphasis>Pozn�mka:</emphasis> : M��ete pou��t tak� nov� skript
<literal>./configure</literal> pro Apache. P�e�t�te si instrukce v
<literal>README.configure</literal>, kter� je v distribuci Apache.
Nahl�dn�te tak� do souboru <filename>INSTALL</filename>
z distribuce PHP.
</para>
</answer>
</qandaentry>
<qandaentry id="faq.build.not-running">
<question>
<para>
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.
</para>
</question>
<answer>
<para>
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:
<itemizedlist>
<listitem>
<simpara>
Ujist�te se, �e se spou�t� pr�v� ten httpd, kter� jste
zkompilovali. Zkuste spustit
<literal>/path/to/binary/httpd -l</literal>
</simpara>
<simpara>
Pokud v seznamu neuvid�te <filename>mod_php4.c</filename>,
potom nespou�t�te spr�vnou verzi httpd. Najd�te s instalujte spr�vnou
verzi.
</simpara>
</listitem>
<listitem>
<simpara>
Ujist�te se, �e jste p�idali spr�vnou specifikaci Mime Type do
soubor� <literal>.conf</literal>pro Apache. M�lo by tam b�t:
<literal>AddType application/x-httpd-php3 .php3</literal> (pro PHP 3)
</simpara>
<simpara>
nebo <literal>AddType application/x-httpd-php .php</literal> (pro PHP 4)
</simpara>
<simpara>
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.
</simpara>
</listitem>
<listitem>
<simpara>
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.
</simpara>
</listitem>
</itemizedlist>
</para>
</answer>
</qandaentry>
<qandaentry id="faq.build.activate-module">
<question>
<para>
Hl�s� to pou�it�
<literal>--activate-module=src/modules/php4/libphp4.a</literal>,
ale tento soubor neexistuje; proto jsem to zm�nil na
<literal>--activate-module=src/modules/php4/libmodphp4.a</literal> a
ono to nefunguje? O co jde?
</para>
</question>
<answer>
<para>
Uv�domte si, �e soubor libphp4.a nem� existovat. Vytv��� ho proces
serveru Apache!
</para>
</answer>
</qandaentry>
<qandaentry id="faq.build.ansi">
<question>
<para>
Kdy� zkus�m sestavit Apache s PHP jako�to statick�m modulem pomoc�
<literal>--activate-module=src/modules/php4/libphp4.a</literal>,
hl�s� to, �e m�j kompil�tor nevyhovuje ANSI.
</para>
</question>
<answer>
<para>
Toto je zav�d�j�c� chybov� hl�en�, kter� bylo odstran�no v pozd�j��ch
verz�ch.
</para>
</answer>
</qandaentry>
<qandaentry id="faq.build.apxs">
<question>
<para>
Kdy� zkus�m sestavit PHP s parametrem <literal>--with-apxs</literal>,
dostanu z�hadn� chybov� zpr�vy.
</para>
</question>
<answer>
<para>
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:
<programlisting>
my $CFG_CFLAGS_SHLIB = ' '; # nahrazeno pomoc� Makefile.tmpl
my $CFG_LD_SHLIB = ' '; # nahrazeno pomoc� Makefile.tmpl
my $CFG_LDFLAGS_SHLIB = ' '; # nahrazeno pomoc� Makefile.tmpl
</programlisting>
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:
<programlisting>
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
</programlisting>
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
<programlisting>
my $CFG_LIBEXECDIR = 'modules'; # nahrazeno pomoc� APACI install
</programlisting>
Pokud vid�te v��e uveden� ��dek, nahra�te ho t�mto:
<programlisting>
my $CFG_LIBEXECDIR = '/usr/lib/apache'; # nahrazeno pomoc� APACI install
</programlisting>
Nakonec, kdy� budete p�einstalov�vat Apache, za�a�te 'make clean'
mezi './configure' a 'make'.
</para>
</answer>
</qandaentry>
<qandaentry id="faq.build.microtime">
<question>
<para>
During 'make', I get errors in microtime, and a lot of 'RUSAGE_' stuff.
</para>
</question>
<answer>
<para>
During the 'make' portion of installation, if you encounter problems
that look similar to this:
<programlisting>
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
</programlisting>
</para>
<para>
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:
<programlisting>
$ cat >test.c <<X
#include <sys/resource.h>
X
$ gcc -E test.c >/dev/null
</programlisting>
Pokud se objev� chyby, ve va�ich hlavi�kov�ch souborech panuje chaos.
</para>
</answer>
</qandaentry>
<qandaentry id="faq.build.upgrade">
<question>
<para>
Chci upgradovat sv� PHP. Kde najdu tvar ��dku
<command>./configure</command>, kter� byl pou�it pro sestaven� st�vaj�c�
instalace PHP?
</para>
</question>
<answer>
<para>
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
<programlisting>
<?php phpinfo(); ?>
</programlisting>
Naho�e ve v�pisu najdete ��dek <command>./configure</command>, kter� byl
pou�it p�i sestavov�n� st�vaj�c� instalace.
</para>
</answer>
</qandaentry>
</qandaset>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->