Diğer SAPI'lerden dikkate değer farklılıklar

CLISAPI'nin diğer SAPI'lerden dikkate değer farklılıkları:

  • CLISAPI'den farklı olarak, çıktıya hiçbir başlık yazılmaz.

    CGISAPI HTTP başlıklarını önlemek için bir yol sunsa da, CLISAPI'de onları etkinleştirecek eşdeğer bir seçenek yoktur.

    CLI öntanımlı olarak sessiz kipte başlar, -q ve --no-header seçenekleri eski CGI betiklerinin kullanımına uyumluluk için tutulmaktadır.

    Çalışma dizinini betiğinki ile aynı yapmaz. (-C ve --no-chdir seçenekleri uyumluluk için tutulmaktadır)

    Düz metin hata iletileri (HTML biçimlendirmesi yok).

  • Kabuk ortamında birşey ifade etmedikleri için CLISAPI tarafından geçersiz kılınan bazı php.ini yönergeleri vardır:

    Geçersiz kılınan php.ini yönergeleri
    YönergeCLISAPI öntanımlı değeriYorum
    html_errorsfalse Hata iletileri HTML etiketleri ile karıştırılmışken, kabukta bunları okumak oldukça zor olacağı için bu yönerge öntanımlı olarak false değerlidir.
    implicit_flushtrue Kabuk ortamında, print, echo ve arkadaşlarından gelen çıktıların önbellekte tutulmadan hemen çıktıya yazılması istenir. Eğer standart çıktıyı ertelemek veya işlemek isterseniz çıktı önbellekleme kullanabilirsiniz.
    max_execution_time0 (sınırsız)HTML üretmek için yazılan uygulamalar genellikle çok çabuk işletilse de, kabuk ortamlarında PHP kullanımının sonsuz olasılığı olduğu için, kabuk uygulamaları daha fazla işletim zamanı harcama eğilimindedirler, bu nedenle azami işletim süresi sınırsız olarak belirtilmiştir.
    register_argc_argvtrue

    Bu ayarın true olması, CLISAPIde çalıştırılan betiklerin argc (uygulamaya aktarılan bağımsız değişken sayısı) ve argv (gerçek bağımsız değişkenler dizisi) değerlerine her zaman erişebilmesi anlamına gelir.

    CLISAPI kullanırken $argc ve $argv PHP değişkenleri uygun değerlere ayarlanır. Bu değerleri $_SERVER dizisinde de bulabilirsiniz. Örnek: $_SERVER['argv']

    output_bufferingfalse

    Bu yönergenin öntanımlı değeri false olmasına rağmen Çıktı tamponlama işlevleri kullanılabilmektedir. functions are available.

    max_input_timefalse

    PHP CLI, GET, POST ve dosyaların karşıya yüklenmesini desteklemez.

    Bilginize:

    Bu yönergeler php.ini yapılandırma dosyasından veya özel bir yapılandırma dosyasından başka bir değerle ilklendirilemezler. Bu sınırlamanın sebebi bu değerlerin bütün yapılandırma dosyaları çözümlendikten sonra uygulanmasıdır. Fakat, çalışma anında bunların değerleri değişirilebilir (olsa da register_argc_argv gibi bazıları için bu bir şey değiştirmez).

    Bilginize:

    Komut satırı betikleri için ignore_user_abort yönergesinin On olması önerilir. Daha fazla bilgi için ignore_user_abort() işlevine bakınız.

  • Kabuk ortamında G/Ç akımları ile kolay çalışmak için bazı sabitler tanımlanmıştır.

  • CLISAPI geçerli dizini betiğin işletildiği dizine değiştirmez.

    Örnek 1 - CLISAPI farkını gösteren örnek:

    <?php
    // deneme.php isimli basit deneme uygulamamız
    echo getcwd(), "\n";
    ?>

    CGI sürümününü kullanınca, çıktı şöyle olur:

     $ pwd /tmp $ php -q bir_dizin/deneme.php /tmp/bir_dizin 

    Bu açıkça gösteriyor ki PHP geçerli dizinini betiğin çalıştığı dizine değiştiriyor.

    CLISAPI kullanımı sonucu:

     $ pwd /tmp $ php -f bir_dizin/deneme.php /tmp 

    Bu, PHP'de kabuk araçları yazarken daha fazla esneklik imkanı verir.

    Bilginize:

    CGISAPI bu CLISAPI davranışını komut satırından çalışırken -C seçeneği ile destekler.

To Top