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 | 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) | Kabuk ortamlarında PHP kullanımının sonsuz olasılığı olduğu için, azami işletim süresi sınırsız olarak belirtilmiştir. HTML üretmek için yazılan uygulamalar genellikle çok çabuk işletilse de, kabuk uygulamaları daha fazla işletim zamanı harcama eğilimindedirler. |
register_argc_argv | TRUE |
Bu ayar TRUE olduğu için CLI SAPIdeki argc (uygulamaya aktarılan değiştirge sayısı) ve argv (gerçek değiştirgeler dizisi) değerlerine her zaman erişebilirsiniz. PHP 4.3.0'dan beri, CLI SAPI kullanırken $argc ve $argv PHP değişkenleri uygun değerlerle doldurulur ve kaydedilir. Bu sürümden önce, bu değişkenlerin yaratılışı register_globals PHP yönergesi değerinin on olmasını gerektiren CGI ve modül sürümlerindeki gibi davranırdı. Sürüme ve register_globals ayarına bakmaksızın $_SERVER veya $HTTP_SERVER_VARS üzerinden kullanabilirsiniz. Örnek: $_SERVER['argv'] |
output_buffering | FALSE |
Bu yönergenin öntanımlı değeri FALSE olmasına rağmen Çıktı tamponlama işlevleri kullanılabilmektedir. functions are available. |
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 başka bir değerle ilklendirilemezler. Bu bir sınırlamadır çünkü bu öntanımlı değerler bütün yapılandırma dosyaları çözümlendikten sonra uygulanırlar. Fakat, çalışma anında bunların değerleri değişirilebilir (bu yönergeler için birşey ifade etmez, örn. register_argc_argv).
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!
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.