Kde
by
měl
být
uložen
soubor
php.ini
?
V
UNIXu
má
být
implicitně
v
adresáři
/
usr
/
local
/
lib
.
Mnoho
lidí
to
bude
chtít
při
kompilaci
změnit
pomocí
parametru
--with-config-file-path
.
Mohli
byste
ho
,
například
,
nastavit
zhruba
takto
:
Pak byste zkopírovali soubor
php.ini-dist
z distribuce do
/etc/php.ini
a upravili tak, jak chcete.
Pod
Windows
je
soubor
php.ini
implicintě
umístěn
v
adresáři
systému
Windows
.
UNIX
:
Nainstaloval
jsem
PHP
,
ale
vždy
,
když
načítám
dokument
,
dostanu
zprávu
'
Document
Contains
No
Data
'
!
O
co
jde
?
Pravděpobně
to
znamená
,
že
PHP
má
nějaký
problém
a
padá
.
Podívejte
se
do
protokolu
chyb
,
zda
se
jedná
o
tento
případ
a
pak
zkuste
problém
reprodukovat
malým
testem
.
Pokud
víte
,
jak
používat
'
gdb'
,
velmi
pomůže
,
když
můžete
s
vaším
hlášením
chyby
poskytnout
výpis
(backtrace
)
.
Vývojáři
tak
mohou
snadněji
lokalizovat
problém
.
Používáte-li
PHP
jako
modul
do
serveru
Apache
,
zkuste
něco
jako
:
-
Zastavte
httpd
procesy
-
-
Zastavte
httpd
procesy
-
-
Potom
načtěte
do
prohlížeče
URL
,
kde
se
vyskytl
problém
-
-
Dostanete-li
core
dump
(
PHP
spadne
)
,
gdb
by
vás
o
tom
měl
informovat
-
napište
:
bt
-
Získaný
výpis
(
backtrace
)
byste
měli
přiložit
k
hlášení
chyby
.
To
by
se
mělo
poslat
na
http
:
/
/bugs.php.net
/
Pokud
váš
skript
používá
funkce
pro
regulární
výrazy
(
ereg(
)
a
další
)
,
měli
byste
se
ujistit
,
že
jste
zkompilovali
PHP
a
Apache
se
stejným
balíčkem
pro
regulární
výrazy
.
S
PHP
a
Apachem
1.3.x
by
se
to
mělo
dít
automaticky
.
UNIX
:
Instaloval
jsem
PHP
z
balíčků
RPM
,
ale
Apache
nezpracovává
stránky
s
PHP
!
O
co
tu
jde
?
Za
předpokladu
,
že
se
obojí
,
jak
Apache
,
tak
PHP
,
instalovalo
z
balíčků
RPM
,
bude
třeba
"
odkomentovat
"
nebo
přidat
do
souboru
http.conf
některé
z
následujících
řádků
(nebo
všechny
)
:
#
Extra
Modules
AddModule
mod_php.c
AddModule
mod_php3.c
AddModule
mod_perl.c
#
Extra
Modules
LoadModule
php_module
modules
/
mod_php.so
LoadModule
php3_module
modules
/
libphp3.so
/
*
pro
PHP
3
*
/
LoadModule
php4_module
modules
/
libphp4.so
/
*
pro
PHP
4
*
/
LoadModule
perl_module
modules
/
libperl.so
|
Přidejte také:
AddType
application
/
x-httpd-php3
.php3
/
*
pro
PHP
3
*
/
AddType
application
/
x-httpd-php
.php
/
*
pro
PHP
4
*
/
|
... do globálních vlastností nebo do vlastností virtuální
domény (VirtualDomain) by se měla přidat podpora PHP.
UNIX
:
Instaloval
jsem
PHP
3
z
balíčků
RPM
,
ale
nekompiluje
se
s
podporou
databáze
,
kterou
potřebuji
!
O
co
tu
jde
?
Kvůli
tomu
,
jak
se
PHP
3
budovalo
,
není
snadné
sestavit
kompletní
flexibilní
RPM
balíček
s
PHP
.
Problém
je
vyřešen
v
PHP
4
.
Pro
PHP
3
nyní
doporučujeme
používat
mechanismus
popsaný
v
souboru
INSTALL.REDHAT
v
distribuci
PHP
.
Pokud
trváte
na
použití
RPM
verze
PHP
3
,
čtěte
dál..
.
RPM
pakovače
jsou
nastaveny
na
tvorbu
RPM
balíčků
k
instalaci
bez
podpory
databází
kvůli
zjednodušení
instalací
a
proto
,
že
RPM
používá
adresář
/
usr
/
namísto
standardního
/
usr
/
local
/
.
Musít
sdělit
RPM
souboru
spec
,
které
databáze
podporovat
a
umístění
adresáře
nejvyšší
úrovně
databázového
serveru
.
Tento
příklad
vysvětluje
proces
přidání
podpory
populárního
databázového
serveru
MySQL
,
pro
instalaci
PHP
jako
modulu
do
Apache
.
Všechny
tyto
informace
smaozřejmě
mohou
být
upraveny
pro
libovolný
databázový
server
,
který
PHP
podporuje
.
Pro
tento
příklad
budeme
předpokládat
,
že
jste
instalovali
MySQL
a
Apache
plně
z
balíčků
RPM
.
-
Nejdříve
odstraňte
mod_php3
:
-
Potom
vezměte
zdrojový
balíček
RPM
a
spusťte
na
něm
,
NE
--rebuild
-
Upravte
soubor
/
usr
/
src
/
redhat
/
SPECS
/
mod_php3.spec
V
sekci
%build
přidejte
databázovou
podporu
,
kterou
chcete
,
a
nastavte
cestu
.
Pro
MySQL
byste
přidali
Sekce %build bude vypadat přibližně takto:
-
Poté
,
co
jsou
provedeny
tyto
změny
,
zkompilujte
balíček
takto
:
-
Potom
balíček
nainstalujte
:
Ujistěte se, že jste restartovali Apache, a nyní již máte
PHP 3 s podporou MySQL. Uvědomte si, že je pravděpodobně
mnohem jednodušší zkompilovat distribuční balíček tar a
držet se instrukcí v souboru
INSTALL.REDHAT
z distribuce.
UNIX
:
Přidal
jsem
do
Apache
patch
pro
FrontPage
Extension
a
PHP
náhle
přestalo
pracovat
.
Je
PHP
nekompatibilní
s
FrontPage
Extension
pro
Apache
?
Ne
,
PHP
pracuje
dobře
i
s
FrontPage
Extension
.
Problém
je
v
tom
,
že
FrontPage
patch
modifikuje
některé
struktury
Apache
,
na
které
PHP
spoléhá
.
Překompilování
PHP
(
použitím
'make
clean
;
make'
)
po
instalaci
FP
patche
by
mělo
problém
vyřešit
.
UNIX
/
Windows
:
Nainstaloval
jsem
PHP
,
ale
při
pokusu
načíst
soubor
PHP
skriptu
do
prohlížeče
se
zobrazí
pouze
prázdná
obrazovka
.
V
prohlížeči
vyberte
funkci
'
zobrazit
zdrojový
kód
'
,
nejspíš
uvidíte
zdrojový
kód
vašeho
PHP
skriptu
.
To
znamená
,
že
server
neposílá
skript
k
interpretaci
.
Chyba
je
někde
v
konfiguraci
serveru
-
raději
dvakrát
zkontrolujte
konfiguraci
podle
instrukcí
k
instalaci
PHP
.
UNIX
/
Windows
:
Nainstaloval
jsem
PHP
a
když
chci
načíst
PHP
soubor
do
prohlížeče
,
objeví
se
"
500
Internal
Server
Error
"
.
Při
pokusu
spustit
PHP
došlo
k
nějaké
chybě
.
Abyste
viděli
detailnější
chybovou
zprávu
,
z
příkazové
řádky
,
přejděte
do
adresáře
se
souborem
PHP
(
pod
Windows
php.exe
)
a
spusťte
php
-i
.
Pokud
při
běhu
PHP
dojde
k
chybě
,
bude
zobrazena
odpovídající
chybovou
zpráva
,
která
vám
řekne
,
co
se
má
dál
udělat
.
Pokud
získáte
obrazovku
plnou
HTML
kódu
(
výstup
funkce
phpinfo(
)
)
,
pak
PHP
funguje
a
váš
problém
může
souviset
s
konfigurací
serveru
,
kterou
je
pak
třeba
dobře
zkontrolovat
.
Některé
operační
systémy
:
Nainstaloval
jsem
PHP
bez
chyb
,
ale
nyní
,
když
zkusím
spustit
Apache
,
ohlásí
se
chyby
o
nedefinovaných
symbolech
:
To
aktuálně
nemá
nic
společného
s
PHP
,
ale
s
knihovnami
klienta
MySQL
.
Některé
potřebují
--with-zlib
,
jiné
nikoli
.
Tímto
se
zabývá
také
MySQL
FAQ
.
Nainstaloval
jsem
PHP
,
ale
při
načtení
stránky
do
prohlížeče
se
zobrazí
chyba
:
Tato
chybová
zpráva
znamená
,
že
z
PHP
nemohou
vycházet
žádná
data
.
Abyste
viděli
detailnější
chybovou
zprávu
,
z
příkazové
řádky
,
přejděte
do
adresáře
se
souborem
PHP
(
pod
Windows
php.exe
)
a
spusťte
php
-i
.
Pokud
při
běhu
PHP
dojde
k
chybě
,
bude
zobrazena
odpovídající
chybovou
zpráva
,
která
vám
řekne
,
co
se
má
dál
udělat
.
Pokud
získáte
obrazovku
plnou
HTML
kódu
(
výstup
funkce
phpinfo(
)
)
,
PHP
funguje
.
Jestliže
PHP
pracuje
v
příkazové
řádce
,
zkuste
to
znovu
z
prohlížeče
.
Pokud
to
stále
nefunguje
,
může
to
být
jedním
z
těchto
důvodů
:
-
Nastavení
přístupových
práv
k
souboru
se
skriptem
,
k
php.exe
,
php4ts.dll
,
php.ini
nebo
nějakému
rozšíření
PHP
,
které
se
pokoušíte
načíst
,
je
takové
,
že
k
nim
anonymní
internetový
uživatel
ISUR_
machinename
nemá
přístup
.
-
Soubor
se
skriptem
neexistuje
(
nebo
případně
není
tam
,
kde
si
myslíte
,
že
je
,
relativně
ke
kořenovému
adresáři
webu
)
.
Uvědomte
si
,
že
na
IIS
můžete
tuto
chybu
zachytit
zaškrtnutím
volby
'
check
file
exists
'
při
nastavování
skriptových
služeb
v
Internet
Services
Manageru
.
Pokud
skript
neexistuje
,
server
vrátí
chybu
404
.
Další
výhodou
je
to
,
že
IIS
provede
na
souboru
se
skriptem
všechny
potřebné
autentikace
založené
NTLanMan
.
Dodržel
jsem
všechny
instrukce
,
ale
PHP
a
IIS
stále
odmítají
spolupracovat
!
Ujistěte
se
,
že
každý
uživatel
,
který
potřebuje
spouštět
PHP
skripty
má
práva
pro
spouštění
php.exe
!
IIS
používá
anonymního
uživatele
,
který
se
přidá
při
instalaci
IIS
.
Tento
uživatel
potřebuje
práva
k
php.exe
.
Také
každý
autentikovaný
uživatel
bude
potřebovat
práva
na
spouštění
php.exe
.
A
IIS4
musíte
sdělit
,
že
PHP
je
skriptovací
engine
.