Kurulum
Bu bölüm, kurulum sırasında sık rastlanan sorunlarla ilgili sorular ve
çözümlerden derlenmiştir. PHP hemen hemen tüm işletim sistemlerine
kurulabilmekte ve hemen her HTTP sunucusu ile çalışabilmektedir.
PHP'yi kurmak için Yapılandırma ve Kurulum bölümündeki talimatları
izleyin.
Apache 2'yi çok evreli bir MPM ile üretim ortamında neden
kullanmamalıyım?
PHP üçüncü parti kütüphaneler kullanılarak muhtelif HTTP uygulamaları
geliştirmeyi sağlayan bir yapıştırıcıdır. PHP'nin esnekliği ve gücü
üzerinde çalıştığı platformun gücü ve kararlılığı ile sınırlıdır.
Çalışmak için bir işletim sistemine, HTTP sunucusuna ve 3. parti
modüllere ihtiyaç duyar ve bunlar arasında bir yapıştırıcı gibi
davranır. Bunlardan biri çalışmasını durdurursa sorunu saptayıp çabucak
çözümlemeniz gerekir. PHP'nin üzerinde çalıştığı ortamı, birbirlerinden
bağımsız çalışma evreleri, tamamen ayrı bellek bölümleri ve her istek
için ayrı bir çalışma alanı ile daha da karmaşıklaştırırsanız, PHP'nin
hamuru bir bulamaca dönüşebilir.
Çok evreli bir MPM kullanmak isterseniz, PHP'nin kendi bellek uzayında
çalışmasını sağlayan FastCGI yapılandırması bir çözüm olabilir.
Unix/Windows: php.ini dosyamın yerini bulamıyorum!
Öntanımlı olarak Unix üzerindeki yeri
/usr/local/lib dizinidir. Çoğu kişi bu dosyanın
yerini derleme sırasında --with-config-file-path
seçeneğini kullanarak değiştirmektedir. Siz de isterseniz dosyanın
yerini şöyle değiştirebilirsiniz:
--with-config-file-path=/etc
Böylece kaynak paketindeki php.ini-development dosyası
/etc/php.ini olarak kurulur ve üzerinde
istediğiniz değişiklikleri yapabilirsiniz.
--with-config-file-scan-dir=YOL
Windows'ta php.ini dosyasının öntanımlı yeri Windows dizinidir.
Apache HTTP sunucusu kullanıyorsanız php.ini önce Apache'nin kurulum
dizininde aranır (örn, c:\program files\apache
group\apache). Bu yer aynı makinede çalışan farklı Apache
sürümleri için farklı yerlerde olabilir.
Unix: PHP'yi kurdum, fakat her belge yükleyişimde 'Document Contains No
Data'! (Belge hiç veri içermiyor!) şeklinde bir ileti alıyorum. Ne
yapmalıyım?
Muhtemelen PHP'nin bazı sorunları var ve core dosyası dökümlüyor
olmalı. Bu durumda, sunucunuzun günlük kayıt dosyalarına bakıp sorunu
küçük bir deney ortamında üretmeye çalışın. 'gdb' kullanmayı
biliyorsanız, hata raporunuzda sorun hakkında geliştiricilere çok
yardımcı olacak bir hata izleme çıktısı sağlayabilirsiniz. PHP'yi bir
Apache modülü olarak kullanıyorsanız şunları yapmayı deneyin:httpd sürecini durdurun
gdb httpd
httpd süreçlerini durdurun
> run -X -f /bir/yol/httpd.conf
Ardından soruna sebep olan adresi tarayıcınızla açın.
> run -X -f /bir/yol/httpd.conf
Bir core dosyası dökümleniyorsa gdb size bunun sebebini
söyleyecektir.
Şunu yazın: bt
Hata raporunuza bu geriye doğru hata izleme bilgisini eklemeli ve
raporu » https://bugs.php.net/
adresinden göndermelisiniz.
Eğer betiğinizde düzenli ifade işlevlerini
(
Unix: PHP'yi RPM'leri kullanarak kurdum, fakat Apache, PHP sayfalarını
işlemiyor! Ne yapmalıyım?
Hem Apache hem de PHP'yi RPM paketlerinden kurduğunuz varsayımıyla
httpd.conf dosyanıza aşağıdaki satırların tamamını veya bir kısmını
ekleyin veya başlarındaki # imlerini silip o satırları etkin kılın:
# Ek Modüller
AddModule mod_php.c
AddModule mod_perl.c
# Ek Modüller
LoadModule php_module modules/mod_php.so
LoadModule php5_module modules/libphp5.so
LoadModule perl_module modules/libperl.so
Ve sunucu genelinde geçerli olacak şekilde veya PHP'nin etkin olacağı
sanal konak bölümünde şu satırı ekleyin:
AddType application/x-httpd-php .php
Unix: Apache'yi FrontPage eklenti yamasıyla yamadım ve hemen ardından
PHP çalışmaz hale geldi. PHP, Apache FrontPage eklentileriyle uyumlu
değil mi?
PHP, FrontPage eklentileriyle gayet güzel çalışır. Sorun, FrontPage
yamasının PHP'nin de çalıştığı veri yapılarını değiştirmesidir. FP
yamasını uyguladıktan sonra PHP'yi yeniden derleyerek (make clean;
make) sorunu çözebilirsiniz.
Unix/Windows: PHP'yi kurdum, fakat PHP betiğine tarayıcımla erişmeye
çalıştığımda boş bir sayfa alıyorum.
Tarayıcınıza 'Sayfa kaynağını göster' derseniz PHP betiğinizin kaynak
koduna bakarak sorunun kaynağını bulabilirsiniz. Yani, HTTP sunucusu
betiği yorumlasın diye PHP'ye göndermemiştir. Sunucu yapılandırmasında
birşeyler yanlış gitmiş olabilir. PHP kurulum talimatlarını tekrar
uygulayarak sunucu kurulumunuzu tekrar gözden geçirin.
Unix/Windows: PHP'yi kurdum, fakat PHP betiğine tarayıcımla erişmeye
çalıştığımda sunucudan 500 hatası alıyorum.
Sunucu PHP'yi çalıştırmaya uğraşırken birşeyler yanlış gitmiş. Hataları
görmek için komut satırından PHP çalıştırılabilirinin (Windows'ta
php.exe) bulunduğu dizine geçip php
-i komutunu verin. Eğer PHP çalışırken bir sorun ortaya
çıkıyorsa ne yapılması gerektiği ile ilgili ipuçları içeren bir hata
iletisi gösterilir. Eğer ekranı dolduran bir dolu HTML kodu alıyorsanız
(bu,
Bazı işletim sistemleri: PHP'yi hatasız kurdum fakat Apache'yi
başlatmak istediğimde tanımsız simge hataları aldım:
[mybox:user /src/php5] root# apachectl configtest
apachectl: /usr/local/apache/bin/httpd Undefined symbols:
_compress
_uncompress
Bu sorun PHP'nin kendisi ile değil, MySQL istemci kütüphanesi ile
ilgilidir. Derleme sırasında --with-zlib seçeneğini kullansaydınız bu sorun çıkmayacaktı.
Bu konudan MySQL SSS'sinde de bahsedilmiştir.
Windows: PHP'yi kurdum fakat tarayıcımla bir PHP betiğine erişmek
istediğimde şöyle bir hata alıyorum:
cgi error:
The specified CGI application misbehaved by not
returning a complete set of HTTP headers.
The headers it did return are:
Hata iletisi PHP'nin hiçbir şey çıktılamadan başarısız olduğu anlamına
gelmektedir. Hataları görmek için komut satırından PHP
çalıştırılabilirinin (Windows'ta php.exe)
bulunduğu dizine geçip php -i komutunu verin. Eğer
PHP çalışırken bir sorun ortaya çıkıyorsa ne yapılması gerektiği ile
ilgili ipuçları içeren bir hata iletisi gösterilir. Eğer ekranı
dolduran bir dolu HTML kodu alıyorsanız (bu,
PHP komut satırından düzgün çalışıyorsa betiğe tarayıcınızla tekrar
erişmeyi deneyin. Yine aynı hatayı alıyorsanız sorun şunlardan biri
olabilir:
Yüklemeye çalıştığınız PHP betiği, php.exe,
php5ts.dll, php.ini veya PHP eklentileri gibi
bazı dosyaların izinleri anonim internet kullanıcısının
ISUR_ bunlara erişebilmesine izin
vermiyordur.
Betik dosyası mevcut değildir (veya belge kök dizinine göre sizin
düşündüğünüz yerde değildir). IIS kullanıyorsanız, İnternet
Hizmetleri Yöneticisinde betik eşlemlerini ayarlarken 'dosya mevcut
mu diye bir bakıver' kutusunu işaretlemek suretiyle bu hatayı
yakalayabilirsiniz. Betik dosyasının mevcut olmaması durumunda sunucu
bu hata yerine bir 404 hatası döndürecektir. IIS kullanmanın size ek
bir yararı daha olacak: Betik dosyanız üzerinde NTLanMan izinlerine
dayalı olarak gerekli kimlik doğrulaması da yapılacaktır.
Windows: Tüm talimatları izlememe rağmen PHP ile IIS'yi birlikte
çalıştıramadım!
PHP betiğini çalıştıracak kullanıcıların
php.exe'yi çalıştırabilecek izinlere sahip olup
olmadığına bakın! IIS bunun için kurulumda eklenen bir anonim kullanıcı
kullanır. Bu kullanıcının php.exe'yi çalıştıracak
izne sahip olması gerekir. Ayrıca, kimlik doğrulaması gerektiren
kullanıcıların da php.exe'yi çalıştıracak izne
sahip olması gerekir. Ve IIS4'e PHP'nin bir betik yorumlayıcı olduğunu
da belirtmeniz gerekir. Ek olarak, bu SSS'yi de okumanızı
öneririz.
PHP'yi IIS, PWS, OmniHTTPD veya Xitami ile CGI olarak çalıştırırken şu
hatayı alıyorum: Security Alert! PHP CGI
cannot be accessed directly..
cgi.force_redirect
yönergesine 0 atamalısınız. Öntanımlı değeri
1 olup, php.ini dosyasında bulunduğu satırın
başında bir ; varsa o noktalı virgülü silmeniz
gerekir.
Öntanımlı değer 1 olduğundan değişikliği doğru
php.ini dosyasında yaptığınızdan %100 emin olmalısınız. Daha
ayrıntılı bilgi için bu
SSS'ye bakınız.
Hangi php.ini dosyasının okunduğunu nasıl anlayacağım? Yaptığım
değişikliklerin bir etkisi olmuyor gibi gözüküyor.
php.ini dosyanızın PHP tarafından okunduğundan emin olmak için
Configuration File (php.ini) altında görebilirsiniz.
Böylece dosyayı nereye koyacağınızı bilirsiniz. Eğer listede sadece bir
dizin varsa php.ini dosyanızı bu dizine koymalısınız. php.ini
dosyanız listede gösterilen dizinlerden birindeyse okunacak demektir.
Eğer php.ini okunuyor ve siz PHP'yi bir modül olarak
çalıştırıyorsanız php.ini dosyanızda değişiklik yaptıktan sonra HTTP
sunucunuzu yeniden başlatmayı unutmayınız.
PHP dizinimi Windows'ta PATH değişkenine nasıl
eklerim?
Windows 7, XP, Vista, 2008, 2012 ve üstünde:Denetim Masasına gidip Sistem simgesini açın (Başlat → Denetim
Masası → Sistem).
Gelişmiş sekmesine gidin.
'Ortam Değişkenleri' düğmesine tıklayın.
'Sistem Değişkenleri' panosuna bakın.
Path girdisini bulun (bulmak için listeyi kaydırmanız gerekebilir)
Path girdisine çift tıklayın.
Satırın sonuna bir ';' koyup PHP dizini ekleyin (örnek:
;C:\php).
Tamam düğmesine tıklayın.
Windows 98/Me sistemlerinde ise autoexec.bat
dosyanızı düzenlemeniz gerekecektir:Notepad'i açın (Başlat → Çalıştır ve notepad yazıp enter tuşuna
basın)
C:\autoexec.bat dosyasını açın.
PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;..... satırını bulup satırın
sonuna şunu ekleyin: ;C:\php.
Dosyayı kaydedin ve bilgisayarınızı yeniden başlatın.
Bilginize:
PATH değişkeninde yaptığınız değişikliklerin
uygulanmasını istiyorsanız yukarıdaki işlemleri yaptıktan sonra
bilgisayarınızı yeniden başlatmayı unutmayınız.
PHP kılavuzunda, dosyaların Windows sistem dizinine kopyalanması salık
verilebilir. Bunun sebebi bu dizinin (C:\Windows,
C:\WINNT, vs.) öntanımlı olarak sistem
PATH değişkeninde bulunmasıdır. Windows sistem dizinine
dosya kopyalamak sorunlara yol açması sebebiyle uzun zamandır
önerilmemektedir.
Windows üzerinde PHP'nin php.ini dosyasını kullanabilmesini nasıl
sağlarım?
Bunu yapmanın çeşitli yolları vardır. Apache kullanıyorsanız kurulumla
ilgili talimatları izleyin (Apache 1, Apache 2), aksi takdirde
PHPRC ortam değişkenini atamanız gerekecek:
Windows üzerinde:Denetim Masasına gidip Sistem simgesini açın (Başlat → Ayarlar
→ Denetim Masası → Sistem veya sadece
Başlat → Denetim Masası → Sistem).
Gelişmiş sekmesine gidin.
'Ortam Değişkenleri' düğmesine tıklayın.
'Sistem Değişkenleri' panosuna bakın.
Click on 'Yeni' düğmesine tıklayın ve değişken ismi olarak 'PHPRC',
değer olarak da php.ini dosyanızın bulunduğu yeri yazın (örnek:
C:\php)
Tamam düğmesine tıklayın ve bilgisayarınızı yeniden başlatın.
Windows 98/Me sistemlerinde ise autoexec.bat
dosyanızı düzenlemeniz gerekecektir:Notepad'i açın (Başlat → Çalıştır ve notepad yazıp enter tuşuna
basın)
C:\autoexec.bat dosyasını açın.
Dosyanın sonuna şu satırı ekleyin: set
PHPRC=C:\php (burada C:\php yerine
php.ini dosyanızın bulunduğu dizini yazın). Belirttiğiniz dizinin
boşluk karakteri içermemesine dikkat ediniz. Örneğin, PHP'yi
C:\Program Files\PHP altına kurduysanız bunu
C:\PROGRA~1\PHP şeklinde belirtmelisiniz.
Dosyayı kaydedin ve bilgisayarınızı yeniden başlatın.
PHP ile Apache içerik dili uzlaşımını kullanmak (MultiViews seçeneği)
mümkün mü?
PHP'yi dosya uzantıları ile ilişkilendirirseniz herşey düzgün çalışır.
Bu SSS'de PHP dosyalarını uzantısız ilişkilendirdiğinizi ve içerik
uzlaşımında PHP dosyalarının uzantılarına bakılmaksızın seçilmesini
istediğinizi varsayacağız. Bu durumda, AddType
application/x-httpd-php .php yerine şunları yazın:
AddHandler php5-script php
AddType text/html php
Bu çözüm PHP'nin bir modül olarak çalıştığı Apache 1'de
php-script yakalanmayacağından çalışmayacaktır.
PHP'nin GET ve POST istekleri dışında istekleri işleme sokmaması
sağlanabilir mi?
Hayır. PHP, CONNECT gibi her istek yöntemiyle çalışabilir. Doğru yanıt
durumu
Deny from all