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.
  
  
    - 
     
      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 
--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.
      
      Ayrıca bakınız:
      Yapılandırma Dosyası.
      
    - 
     
      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://github.com/php/php-src/issues
         adresinden göndermelisiniz.
         
 
      Eğer betiğinizde düzenli ifade işlevlerini
      (preg_match() ve benzerleri) kullanıyorsanız, PHP'yi
      ve Apache'yi aynı düzenli ifade paketiyle derlediğinizden emin
      olmalısınız. PHP ve Apache 1.3.x için bu otomatik olarak gerçekleşir.
      
    - 
     
      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, phpinfo() işlevinin çıktısıdır) PHP düzgün
      çalışıyor demektir. Bu durumda sunucu yapılandırmanızı tekrar gözden
      geçirmeniz gerekir.
      
    - 
     
      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,
      phpinfo() işlevinin çıktısıdır) PHP düzgün çalışıyor
      demektir.
      
      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_<makineadı>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 0atamalısınız. Öntanımlı değeri1olup, php.ini dosyasında bulunduğu satırın
      başında bir;varsa o noktalı virgülü silmeniz
      gerekir.
 
      Öntanımlı değer 1olduğ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
      phpinfo() çağrısı yapmanız gerekir. Sayfanın başına
      yakın bir yerlerde hangi dosyanın okunduğu bilgisini
      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.
      
      Ayrıca bakınız: php_ini_loaded_file().
      
    - 
     
      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 Apache
      belgelerine bakın, aksi takdirde PHPRC ortam
      değişkenini kullanmalısınız.
      
    - 
     
      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 .phpyerine şunları yazın:
 
AddHandler php5-script php
AddType text/html php 
 Bu çözüm PHP'nin bir modül olarak çalıştığı Apache 1'dephp-scriptyakalanmayacağı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 header() ile gönderilebilir. Eğer sadece GET
      ve POST yöntemlerinin işleme sokulmasını istiyorsanız bunu Apache
      yapılandırmanızda şöyle sağlayabilirsiniz:
       
<LimitExcept GET POST>
Deny from all
</LimitExcept>