PHP
downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

Derleme Sorunları> <Veritabanı Sorunları
Last updated: Fri, 30 Jan 2009

view this page in

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.

    Mutlaka çok evreli bir MPM kullanmak zorundaysanız, PHP'nin kendi bellek uzayında çalışmasını sağlayan FastCGI yapılandırması bir çözüm olabilir.

    Ancak, çok evreli MPM kullanımı Windows sistemler için bir sorun teşkil etmez çünkü bu platform üzerinde çalışan çoğu kütüphane zaten çok evreli kullanımı desteklemektedir.

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

    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 » http://bugs.php.net/ 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 özdevinimli 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_php.c
    AddModule mod_perl.c
    
    # Ek Modüller
    LoadModule php_module         modules/mod_php.so
    LoadModule php5_module        modules/libphp5.so     # PHP 5 için
    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/php4] 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, php4ts.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 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 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().

    PHP dizinimi Windows'ta PATH değişkenine nasıl eklerim?

    Windows NT, 2000, XP ve 2003'te:

    • Denetim Masasına gidip Sistem simgesini açın (BaÅŸlat -> Ayarlar -> Denetim Masası -> Sistem veya Windows XP/2003 için 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.

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

    • 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 NT, 2000, XP ve 2003 üzerinde:

    • Denetim Masasına gidip Sistem simgesini açın (BaÅŸlat -> Ayarlar -> Denetim Masası -> Sistem veya Windows XP/2003 için 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:

    # PHP 4
    AddHandler php-script php
    AddType text/html php
    
    # PHP 5
    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 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>
    



    Derleme Sorunları> <Veritabanı Sorunları
    Last updated: Fri, 30 Jan 2009
     
    add a note add a note User Contributed Notes
    Kurulum
    Philipp
    18-Jul-2008 07:20
    When installing or updating php 5.x on Windows 2003 with IIS the installer sets the ISAPI application extension path incrorrectly. (The filename portion of the path is truncated with ~ at the end).

    This causes IIS to not serve any .php pages on any of the configured websites.

    To solve this, open IIS Manager and expand the tree to "websites". Open "websites" properties dialogue and go to the "Home Directory" tab. Click on the "configuration" button.

    In the "Application Configuration" window, select .php from the "Application Extensions" and correct it's path by browsing to the "php5isapi.dll" file in your PHP5 directory.

    Choose to replace this configuration option on all configured websites that make use of php when asked.

    You can also set this option for individual websites only instead of the top-level website.
    jonas at carello dot se
    25-Jun-2008 01:53
    If after installting/upgrading PHP on Windows 2000/2003/2008 server with IIS, you're only getting blank pages (or if examining the headers, HTTP 500 errors), try the following:

    1. Uninstall PHP and remove all traces of it, IIS ISAPI settings, php.ini and the entire PHP directory.

    2. Restart the computer.

    3. Install PHP again, you can install and use extensions if you wish.

    4. Check the ISAPI settings in IIS (or CGI, depending on what you're using).

    5. Restart IIS several times (don't ask me why, it makes no sense).

    6. If it still doesn't work, copy the following files to %WINDIR%\system32\ from your PHP directory.
    (Some files might not exist, I think it depends on your choice of extensions.)

    libmysql.dll (if you're using MySQL)
    libeay32.dll (even if you're not using OpenSSL)
    ssleay32.dll (even if you're not using OpenSSL)
    libmcrypt.dll (If you're using mcrypt)
    libmhash.dll (If you're using mhash)

    7. Restart IIS again.

    8. If it still doesn't work, check if you have additional lib*.dll in your PHP folder and try copying these to %WINDIR%\system32\.

    The above has helped me 3 times when updating my PHP installation (first from 5.05->5.1.4, second from 5.1.4->5.2.1 and today from 5.2.1->5.2.6).
    Each time I've run into the exact same problem, blank pages (500 internal server error).

    I hope this helps someone.
    john dot calder at manukau dot ac dot nz
    04-May-2008 08:19
    WINDOWS 2003 and IIS.  BIG LESSON FOR ME was "don't mess with the optional components".
    I had lots of trouble until I tried installing without asking for extras and then it was very smooth.
    I have found no need to set up paths. 
    I have found no need to configure IIS. 
    I have found no need to change security on the PHP folder.

    What works for me with Windows/IIS:

    1.  You need to be logged-on as "administrator"

    2.  Run  "php-5.2.6-win32-installer.msi"
    Your ONLY action during this wizard is to select "IIS ISAPI" as the webserver.  Do NOT CHANGE anything else!  I am guessing that the optional extras apply only to Apache because after enabling them I see Apache-related error messages.

    3.  Setup a test virtual directory as you would for an ASP or ASP.NET web app.  eg "phptest"
    Then use notepad to create a test page eg "test.php"
    <?php
    phpinfo
    ();
    ?>

    4.  In Internet Explorer, test with eg this address
    http://localhost/phptest/test.php

    IF this does not give you a beautiful page of details THEN start reading other advice on this page - especially helpful for me was the faq advice to test run "php.exe -i" from the command prompt.
    charleslynch at xybersoftware dot com
    18-Apr-2008 05:30
    One final note to the message below if you are getting the message about not having rights to execute...You need to use IIS right click on the website and choose 'Properties/Home Directory' then on the 'Execute Permissions' combo box you need to choose 'Scripts only'...Click ok...another dialog may appear asking which directories to apply the action too...choose any directories that you intend on using php in and click ok...It should work now...
    charleslynch at xybersoftware dot com
    17-Apr-2008 09:50
    To get php 5.2.5 to work in IIS on Windows Server 2003

    1. Install PHP choose the IIS ISAPI webserver option on the first panel of the php install
    2. Make sure your website is accessible for example make sure it works with html files
    3. Now startup IIS and click on the Web Sevice Extensions folder icon, you should see the PHP Hypertext Processor installled and enabled. Click on the 'All Unknown ISAPI Extensions' and then click the 'Allow' button.
    4. Now you need to give the internet users access to the php executable directory ie c:\php or c:\program files\php by using internet explorer and right clicking the php directory and choosing Properties/Security/Add...Now in the 'Select Users or Groups' dialog that appears in the 'Enter the Object Names to select' type in the name of the internet guest account (ie IUSER_TEMPLATE in my case)...click the check names to make sure you got it right and click the OK button.  Finally in the PHP properties dialog click the Internet Guest Account icon and set the permissions to be 'Read & Execute, List Folder Contents and Read'.  Click ok and now it should work.  Create a very simple php file and test it...

    If you get the 404 file not found error then the ISAPI extensions are not allowed (#3 above)
    If you get a blank page then the ISAPI extensions are probably setup right but you need to give the internet user access rights to the php executable directory (#4 above)
    joerg at fenin dot de
    03-Nov-2007 12:35
    To limit HTTP Request Methods on the Apache server running PHP you should use mod_rewrite or mod_security instead of LimitExcept, to give you more control over the handling of such http errors.  Can go in .htaccess file or httpd.conf

    # mod_rewrite
    <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteCond %{REQUEST_METHOD} !^(GET|HEAD|POST)$
      RewriteRule .* - [F,L]
    </IfModule>

    # mod_security
    <IfModule mod_security.c>
      SecFilterSelective REQUEST_METHOD "!^(GET|HEAD|POST)$" "deny,log,status:403"
    </IfModule>

    You can use the php request method scanner at askapache to see exactly how your server deals with various request methods, and check that your server is configured properly.. 

    http://www.askapache.com/online-tools/request-method-scanner/
    scott at chaisson dot net
    20-Sep-2007 07:18
    Windows 2000 Server and IIS (SP4 and all patches):

    After many frustrating hours of trying to figure out the install (again), It took a while, but here are a couple tips:

    PHP working with IIS uses c:\winnt\php.ini

    It doesn't matter what you set the path to, nor what you set the PHPRC environment variable to. After you get PHP running correctly in the installation folder (using php -i) copy the php.ini file into the c:\winnt folder.

    Here's what worked for me:

    - Add PHP path to System environment variable

    - Add php5activescript.dll from http://snaps.php.net/ to the PHP folder, then Register it: "regsvr32 php5activescript.dll"

    Set extension_dir and doc_root directives in PHP.INI:
      extension_dir = C:\WWW\PHP\ext
      doc_root = C:\WWW\Site
      cgi.force_redirect = 0

    (the last cgi.force_redirect isn't required, but I like to set it anyway)

    Copy the .INI file into WINNT folder

    In IIS Manager, right-click "Default Web Site", Click "Home Directory",
      Click "Configuration", "Add" the ISAPI application:
        Executable: <your php install>\php5isapi.dll
        Extension: .php
        Limit to: GET,HEAD,POST
        Check: "Script Engine"
        Uncheck: "Check that file exists"

    Finally: Set up an ISAPI filter:
      Click the "ISAPI Filters" tab,
      Filter Name: PHP
      Executable: <your php install>\php5isapi.dll

    Notes: You don't have to set any of your folders as "Script source" folders. .PHP files aren't scripts, merely text files that require processing before being shipped off to the browser, which is what the ISAPI filter does.

    Finally, working again.

    Chase
    christianfelix at laszlo dot com
    17-Jul-2007 01:39
    For Windows XP users

    Just add php.ini to windows/system 32 and also save a copy in the setup folder e.g. c:/php/php.ini, c:/php5/php.ini,

    You have to follow the suggestions, add to path, uncomment extensions and voila!!
    Meiki67 skipthis at geemail
    08-Jun-2007 02:41
    Had a hard day to MSI install 5.2.3 on WinXP with MySQL. I use a drive substitution (subst drive: path - in my case subst d: c:\drive_d) and installed PHP in D:\PHP - which in reality is C:\DRIVE_D\PHP.  To make a long story short - only after (1) changing all substituted D:\ back to C:\DRIVE_D and (2) resolving all DOS short names to Win long names PHP started to work. The first one is clear - the substitution works only for the active console user - not for services or IUSR. For the second one I have no explanation, since DOS short names should work systemwide - maybe Win handles them correctly but PHP not ?

    BTW <?php phpinfo(); ?> was of tremendeous help

    Meiki
    gui dot priaulx at gmail dot com
    03-Jun-2007 10:05
    When i first installed PHP 5.2 / 5.1 on Windows 2k3 server standard edition, i got error 404's on every page i tried to load, i then noticed that in the file extention configuration list, .php files where going to E:\PHP\\php5isapi.dll or something similar, the problem was the two back slashes, i'm not sure what their purpose is. After i changed it too one, PHP worked well for about 5 minutes then the Application poop started to crash and a whole new bag of problems fell open, but thats just observation if it helps anyone.
    Curtis
    19-May-2007 05:39
    I have some additional troubleshooting tips for 53.7, which deals with getting a blank screen on your browser when running a PHP script.

    In addition to server misconfiguration, it may also be that PHP isn't configured to output errors to the browser, which is the case if you or your host uses a more secure php.ini. If this is the case, you need to find out where errors are being logged to find out if any errors are preventing normal output from being delivered to the client.

    If you have access to php.ini, check the 'display_errors' directive, which is, by default, located under the 'error_reporting' directive. It's helpful to have 'display_errors' on during debugging phases, but best to have it off in production environments.

    Related functions: http://php.net/ini_set | http://php.net/error_reporting | http://php.net/error_log
    knutw at sparhell dot no
    07-Nov-2006 07:15
    I recntly upgraded from PHP 5.1 to 5.2 on my Windows Server 2003 using IIS6. I selected CGI as before. My PHP folder is as always C:\Program Files\PHP. I also edited my brand new php.ini, enabling all my old extensions and recommended settings for IIS. I like not to keep my old config into a new version.

    After upgrade, I just got blank pages in my browser, and the response status was 404 Not found.

    I checked my installation twice, using this FAQ, but got no way.

    Then I went to IIS Manager, Web Service Extensions. The php Service Extension was Allowed as it should. I deleted the Service Extension and added it. The old extension used short file names containing tilde (PROGRA~) character, but I don'æt know if that gas anything to do with the problem. Anyway, after allowing my" new" Service Extension, pointing to php-cgi.exe as before, mye web sites suddenly worked. So will revommend anyone with thos problem to delete and add the Servcie Extension. It didn't help re-allowing it, restarting IIS or the complete server.
    14-Sep-2006 05:03
    After setting the PHPRC environment variable, none of my PHP files would hit the preprocessor. The browser was just serving out PHP source code right there in the "view source."

    The manual was telling me to set this var to "c:\php," but nothing was working. It's almost as if IIS/Win2000 wasn't reading my php.ini at all.

    After I set that variable to "c:\php\php.ini," all of a sudden I was getting honest to goodness PHP pages working.
    info at kylierose dot com dot au
    03-May-2006 01:22
    I had trouble using IIS and PHP with Firefox. If you are having similar problems then take a look at this article: http://blogs.wdevs.com/shog9/archive/2005/03/09/2668.aspx
    emzeperx at emzeper dot hu
    01-Jan-2006 10:36
    You do not have to restart the whole system make effect of changing the PATH env var. For me (sbs2003) worked automatically.
    on older systems you can use

    set $Path=%path%;c:\php

    command to extend immediately the path var.
    JUSTANOTHERUSER
    14-Aug-2005 09:23
    <LimitExcept GET POST>
    Deny from all
    </LimitExcept>

    Does not work with Apache2+ & PHP5 . Apache Refuses to start
    per dot fikse at ipj dot no
    12-Jul-2005 11:22
    Installing PHP 4 or 5 on Windows Server 2003 x64 results in http error 505. This is not a PHP bug. It is due to running a 32-bit ISAPI DLL under the 64-bit version of IIS 6, as documented here: http://support.microsoft.com/?id=895976

    Solution: Flip the Metabase flag for Enable32bitAppOnWin64 as described in http://support.microsoft.com/?id=894435 ,
    like this: CSCRIPT ADSUTIL.VBS SET W3SVC/AppPools/Enable32bitAppOnWin64 1

    (Alternatively with full path: cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1)
    patrick hat paddyworks dot com
    23-May-2005 07:52
    In setting up PHP 5.0.4 + IIS 6  I can concur with vlad at vkelman dot com that setting the environment variable PHPRC is ineffective at telling IIS where to look for php.ini.  The only place PHP5 seems to successfully find php.ini is in C:\Windows.  Using PHPIniDir with Apache2 works like a charm, however.
    vlad at vkelman dot com
    02-Mar-2005 06:45
    In addition of what jimo at mail dot azhsv dot com said:

    I don't know which idiot at Microsoft wrote those Knowledge Base articles (http://support.microsoft.com/kb/328360/EN-US/) - maybe the same idiot who created "Web Server Extensions". But the same - adding extensions and enabling them may be achived much simplier: just open III Manager, go to "Web Server Extensions" and add what you need interactively.

    I'm trying to make both PHP 4 and PHP 5 running as modules on my machine, PHP 4 under IIS and PHP 5 under Apache 2. It turns out that it much easier to work with Apache. In particular, it allows to use PHPIniDir directive to point PHP to php.ini file. IIS is supposed to allow it with setting the PHPRC environment variable, but for some reason it doesn't work on my machine so far.
    barry dot fagin at usafa dot af dot mil
    04-Jan-2005 07:22
    Fixing 404 (file not found) errors with PHP 5.0.3 and IIS 6.0

    IIS 6.0 is installed with security settings that don't permit dynamic content.  This means that even if all the hints in the FAQ are paid attention to (.ini modified correctly, security and permissions correct for IUSR_xxx user, etc), you still get 404 errors for all php files. 

    To fix this:  IIS Manager -> expand local computer -> Web Services Extensions -> Add web service or extension -> .php, browse to c:\php\php-cgi.exe or wherever you had the php executable installed. That plus setting the doc_root in the .ini file solved the problem.

    --BF
    furrycod at hotmail dot com
    07-Sep-2004 07:35
    Great WAMP 1.4.4 (Apache 1.*, MySql 4.*, PHP 4.*) installation article at http://www.circaware.com/articles.php?id=2

    This article details how to install these onto a USB stick--which means changing *nothing* on the host PC, such as registry entries, environment variables, files in the Windows path, NT services, ini files, etc.

    The USB stick install seems awkward, but I installed WAMP to my harddrive using this article as a guide (essentially replacing E:\ with C:\), and it works fine.  No more trying to decide where the *real* php.ini or my.ini file is that needs to be changed.
    masternuthin diespammer at yahoo dot com
    24-Jun-2004 01:33
    PHP 4.3.7.7 and IIS 6 (w2k3 standard)

    Followed note from nigel dot salt at hotmail dot com
    but had to modify "Script Map" to "ScriptMap"

    Also, had to follow note from jimo at mail dot azhsv dot com

    after all that - it worked.
    jeff_graham at datacenterservices dot net
    01-Feb-2004 11:51
    As stated within the note "jimo at mail dot azhsv dot com
    29-Nov-2003 04:33
    PHP 4 and IIS 6.0 (Windows Server 2003)," I found the same steps were requiered for installation of PhP 5 beta 3 on my Windows 2003 server (Standard Edition)
    nigel dot salt at hotmail dot com
    14-Dec-2003 03:00
    Finally got IIS 5 and PHP 5 to talk. 

    What worked for me was:

    1) Set
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
    W3SVC\Parameters\Script Map]
    ".php"="your path to php\\php.exe"

    2) ensure there is not a php.ini in the windows system folder and that there is one wherever you've put PHP

    3) edit php.ini and set cgi force redirect to 0 and cgi.rfc2616_headers = 1

    4) Put the PHP scripts in their own folder underneath the inetpub root

    5) Open the IIS console, right click your new php folder
    In the Directory tab
     set application name to the name of the folder
     set executable and script as permission
     set application protection to low
    Click configuration and check that .php is mapped to wherever you put
    PHP

    Restart IIS

    Try a very simple PHP page and it should work

    Nigel
    jimo at mail dot azhsv dot com
    30-Nov-2003 05:33
    PHP 4 and IIS 6.0 (Windows Server 2003)

    Had difficulty getting PHP 4.3.3 to work with Win2003 Ent Server for use with SquirrelMail.  Problem found and believed solved.  Appears to be something New with IIS 6.0 (More security by Micro$oft)  Was getting 404 error and php was not being run as a cgi even though it was in extensions and IIS user had rights to execute it. (php from command line operated correctly)

    If you are installing on Windows Server 2003 (only have Enterprise Edition – Not sure if this applies to standard edition), and you have done the normal procedures for inclusion of PHP scripts (either ISAPI or CGI) in IIS, you will still get a 404 error when attempting to execute those scripts even though IIS has rights and the extension points to the correct file.  To alleviate this problem, perform the following:

    1.    Open a command prompt window
    2.    Change to C:\windows\system32
    3.    Execute the command:  cscript  iisext.vbs /AddFile c:\php\php.exe 1 php 0 php
    4.    Execute the command:  cscript iisext.vbs /EnFile c:\php\php.exe
    5.    To check for correct execution of the above,
    6.    Execute the command:  cscript IisExt.vbs /ListFile – the php extension should be listed

    If you try just step 4 without step 3 you get an error that the file is not in the list (and won’t be there till you do step 3 above)

    After this, IIS seems to like the php extension and work normally.

    For additional reference, see the below 3 Micro$oft KB Articles:
    HOWTO: Enable and Disable ISAPI Extensions and CGI Applications in IIS 6.0 (MS KB Article 328360)

    HOWTO List Web Server Extensions and Extension Files in IIS 6.0 (MS KB Article 328505)

    HOWTO Add and Remove Web Service Extension Files in IIS 6.0 (MS KB Article 328419)
    peter dot mosinskisNOSPAM at csuci dot edu
    06-Mar-2003 10:36
    Running Win2K AS + IIS5.0 + PHP 4.3.1, I ran into a nasty problem that I mistakenly thought had to do with something in the php.ini configuration. When I would try to submit a form using the HTTP method GET it would work, but I would get a "404 Page Not Found" error using the POST method.

    All my permissions were set correctly, the php.ini was configured correctly. It had to do with URLScan being installed on IIS (see below)

    Page 404 File Not Found Error When Using POST method in PHP (and Perl, and otherwise)
    -------------------------------------------

    This is related to the Microsoft URLScan utility. If you have this problem, the IIS administrator has probably run the IIS Lockdown tool as well as configured URLScan to reject this type of HTTP method when sent in a URL. These tools are meant to enhance web server security.

    URLScan configuration files can be found in the \WINNT\system32\inetsrv\urlscan folder on the web server. Specifically, the file to modify is urlscan.ini.

    The changes to make are as follows:
    1. Make sure UseAllowVerbs=1 under [options]
    2. Under the [AllowVerbs] section, list your allowed HTTP methods to include:
        GET
        POST

    For more information on the IIS Lockdown tool and URLScan, visit http://technet.microsoft.com
    monroe at peoplego dot com
    18-May-2002 08:32
    INSTALLATION ON OPENBSD 3.1 VIA PORTS COLLECTION
    Would have succeed but no mysql support.
    I commented out the FLAVORS+= dbase filepro mysql mysql_bundled postgresql iodbc in the /usr/ports/www/php4/Makefile and in the configure options added 
    --with-mysql=/usr/local   and it worked.

    Good Luck
    rodent at mighty dot co dot za
    17-Apr-2002 02:46
    On windows 2000 installation I've had PHP simply hanging when running a PHP script.

    To see exactly what is going wrong with PHP in the context of the IUSR_MACHINENAME account create a shortcut on your desktop to point to cmd.exe.

    Right click on the shortcut, and select properties.

    Then check the 'run as a different user' checkbox of the property pages of the shortcut.

    Double click then shortcut, and you will be prompted for a user account to run the cmd.exe shell under.

    Enter IUSR_MACHINENAME (replace machine name with the machine name of your system), and enter the password for the account.

    If you don't know the password for the IUSR account you might need to go change it in Administrative Tools->Computer Management.

    Enter the password, and you will be dropped into a command prompt.

    Now run c:\php\php.exe -i and see if you can catch any error messages.

    On my system it had a problem accessing c:\winnt\system32\browscap.ini which I was then able to sort out.

    Running PHP as the Administrator user didn't give this problem, so being able to impersonate the IIS account was a very useful diagnostic tool.
    tanis22 at hotmail dot com
    13-Nov-2001 09:01
    I figured out why i get this error with just a virtual directory and not the root:

    8. Windows: I have installed PHP, but when I to access a PHP script file via my browser, I get the error: cgi error:
     The specified CGI application misbehaved by not
     returning a complete set of HTTP headers.
     The headers it did return are:
    ---------------------
    Look at the php.ini file and look for

    doc_root =

    set it to nothing so that it does not only look for that directory. I hope it helps people with IIS and PHP
    rggonzalez at iname dot com
    10-Nov-2000 03:40
    Notes on installing PHP (3.x.x or 4.x.x) on a RedHat 6.x Linux box using glibc 2.1.x. When you install it as a DSO  module for Apache (--with-apxs) with the standard RPM's from RedHat for Apache and MySQL, the httpd daemon dies without giving any error message, and without sending any message to the console.

    From a comment by Rasmus Ledorf: this is caused "probably due to a glibc-2.1.x bug related to dynamically loading a library
    linked against pthreads into a binary that isn't linked against
    pthreads.  Try it using --without-mysql and see if it works.  If it does
    then you know it is a mysql-related problem.  To fix it you will need the
    non-threaded mysql client rpm available from www.mysql.com".

    You can also download the source code for MySQL and recompiled it statically, using this configuration options:

     --with-client-ldflags=-all-static
     --with-mysqld-ldflags=-all-static

    You must then re-run the ./configure; make; make install in your PHP source tree to get the PHP shared module working with the new MySQL support.

    Regards,
    Rodolfo Gonzalez.
    rggonzalez@iname.com

    Derleme Sorunları> <Veritabanı Sorunları
    Last updated: Fri, 30 Jan 2009
     
     
    show source | credits | sitemap | contact | advertising | mirror sites