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:
Yönerge | CLI SAPI öntanımlı değeri | Yorum |
---|---|---|
html_errors | FALSE |
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_flush | TRUE |
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_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 | TRUE |
Bu ayarın 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 | FALSE |
Bu yönergenin öntanımlı değeri |
max_input_time | FALSE |
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.
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.