Diğer SAPI'lerden dikkate değer farklılıklar
CLI SAPI'nin diğer SAPI'lerden dikkate değer farklılıkları:
-
CLI SAPI'den farklı olarak, çıktıya hiçbir başlık yazılmaz.
CGI SAPI HTTP başlıklarını önlemek için bir yol sunsa da, CLI SAPI'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 CLI SAPI tarafından geçersiz kılınan bazı php.ini yönergeleri vardır:
Geçersiz kılınan php.ini yönergeleri Yönerge CLI SAPI öntanımlı değeri Yorum html_errors FALSEHata iletileri HTML etiketleri ile karıştırılmışken, kabukta bunları okumak oldukça zor olacağı için bu yönerge öntanımlı olarak FALSEdeğerlidir.implicit_flush TRUEKabuk 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_time 0 (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_argv TRUEBu ayarın
TRUEolması, CLI SAPIde çalıştırılan betiklerin argc (uygulamaya aktarılan değiştirge sayısı) ve argv (gerçek değiştirgeler dizisi) değerlerine her zaman erişebilmesi anlamına gelir.CLI SAPI 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_buffering FALSEBu yönergenin öntanımlı değeri
FALSEolmasına rağmen Çıktı tamponlama işlevleri kullanılabilmektedir. functions are available.max_input_time FALSEPHP 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.
-
CLI SAPI geçerli dizini betiğin işletildiği dizine değiştirmez.
Örnek 1 - CLI SAPI 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.
CLI SAPI 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:
CGI SAPI bu CLI SAPI davranışını komut satırından çalışırken -C seçeneği ile destekler.
