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"
)
.
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
'
.
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
:
Pokud používáte csh (C-shell) jako váš login shell (proč?),
bylo by to:
Když
se
kompiluje
soubor
language-parser.tab.c
,
hlásí
to
chyby
,
které
říkají
'
yytname
undeclared
'
.
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
"
.
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
'
.
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
.
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ů
.conf
pro
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
.
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
!
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'.
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
:
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
:
Pokud se objeví chyby, ve vašich hlavičkových souborech
panuje chaos.
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.