Kapitola 49. 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?

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

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 :

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

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 .

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