SAPI
'lerden dikkate değer farklılıklarCLISAPI'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:
Yönerge | CLISAPI ö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 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_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.
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.