PHP'nin komut satırından kullanımı Komut satırından kullanım
Giriş &cli.sapi;'nin ana odağı PHP ile kabuk (veya masaüstü) uygulamaları geliştirmektir. &cli; SAPI'nin bu bölümde anlatılan diğer SAPI'lerden az bir farkı vardır. Söylemek gerekir ki, her ne kadar &cli; ve CGI birçok aynı davranışı paylaşsa da farklı SAPI'lerdir. &cli; SAPI ile öntanımlı olarak etkin kılınır. Etkinliğini kaldırmak için ./configure betiğinde seçeneğini kullanabilirsiniz. PHP 4.3.0'dan beri, &cli;/CGI çalıştırılabilirinin adı, yeri ve mevcudiyeti PHP'nin sisteminize nasıl kurulduğuna bağlı olarak değişecektir. make çalıştırıldığında öntanımlı olarak, hem CGI hem de &cli; derlenir ve PHP kaynak ağacında sapi/cgi/php-cgi ve sapi/cli/php dizinlerine ayrı yerleştirilirler. Her ikisinin de adının php olduğunu farkedeceksiniz. make install çalıştırıldığında ne yaşanacağı yapılandırma satırınıza bağlıdır. Eğer yapılandırma sırasında apxs gibi bir SAPI modülü seçildiyse, veya seçeneği kullanıldıysa, make install sırasında &cli; {PREFIX}/bin/php dizinine kopyalanır, aksi takdirde buraya CGI yerleştirilir. Örneğin, yapılandırma satırınızda ise make install sırasında &cli; {PREFIX}/bin/php dizinine kopyalanır. Eğer CGI kurulumunu etkisiz kılmak isterseniz, make install'dan sonra make install-cli kullanın. Ya da yapılandırma satırınızda belirtebilirsiniz. ve öntanımlı olarak etkinleştirildiği için, yapılandırma satırınızda sadece olması &cli;'nin make install sırasında {PREFIX}/bin/php dizinine kopyalanacağı anlamına gelmez. PHP 4.2.0 ve PHP 4.2.3 arasındaki Windows paketlerinde &cli; php-cli.exe olarak, CGI da aynı dizinde php.exe olarak dağıtılmıştır. PHP 4.3.0'la başlayarak Windows paketlerinde &cli;, cli adlı farklı bir dizinde php.exe olarak dağıtılmıştır, böylece cli/php.exe olmuştur. PHP 5'le başlayarak, &cli; ana dizinde php.exe adıyla dağıtılmıştır. CGI sürümü php-cgi.exe olarak dağıtılmaktadır. &cli; sürümü ana dizinde php.exe isminde CGI sürümü ise php-cgi.exe isminde bir dosya ile dağıtılmaktadır. Buna ek olarak, PHP'nin ile yapılandırılması halinde dağıtım php-win.exe dosyasını da içerir. php-win.exe &cli; sürümü ile aynıdır, fakatphp-win.exe herhangi çıktı vermez, bu nedenle konsolu desteklemez (ekranda "dos penceresi" görünmez). Bende hangi SAPI var? Kabuktan, php -v yazımı php CGI mı &cli; mi olduğunu söyler. Ayrıca php_sapi_name işlevine ve PHP_SAPI sabitine bakınız. PHP 4.3.2'de bir Unix kılavuz (man) sayfası eklendi. Bunu kabuk ortamında man php yazarak görüntüleyebilirsiniz.
Diğer <literal>SAPI</literal>'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, ve seçenekleri eski CGI betiklerinin kullanımına uyumluluk için tutulmaktadır. Çalışma dizinini betiğinki ile aynı yapmaz. ( ve 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 &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 &true; olması, &cli; SAPIde ç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. &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 &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.
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). 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; <acronym>SAPI</acronym> farkını gösteren örnek: ]]> CGI sürümününü kullanınca, çıktı şöyle olur: Bu açıkça gösteriyor ki PHP geçerli dizinini betiğin çalıştığı dizine değiştiriyor. &cli; SAPI kullanımı sonucu: Bu, PHP'de kabuk araçları yazarken daha fazla esneklik imkanı verir. CGI SAPI bu &cli; SAPI davranışını komut satırından çalışırken seçeneği ile destekler.
Komut satırı seçenekleri Seçenekler PHP çalıştırılabiliri tarafından desteklenen komut satırı seçenekleri listesi istenirse PHP seçeneği ile çalıştırılarak sorgulanabilir: [--] [bağımsız değişkenler...] php [seçenekler] -r [--] [bağımsız değişkenler...] php [seçenekler] [-B ] -R [-E ] [--] [bağımsız değişkenler...] php [seçenekler] [-B ] -F [-E ] [--] [bağımsız değişkenler...] php [seçenekler] -- [bağımsız değişkenler...] php [seçenekler] -a -a Etkileşimli çalışır -c | php.ini dosyası bu dizinde aranır -n Hiçbir php.ini dosyası kullanılmayacak -d foo[=bar] 'bar' değerli bir foo INI girdisi tanımlar -e Hata ayıklayıcı/profilci için genişletilmiş bilgi üretir -f 'yı çözümler ve çalıştırır -h Bu yardım iletisini gösterir -i PHP bilgisi -l Sadece söz dizimi denetimi (lint) -m Modül olarak derlenenleri gösterir -r PHP unu betik etiketleri olmadan çalıştırır -B PHP nu girdi satırlarından önce çalıştırır -R PHP unu her girdi satırı için çalıştırır -F Her girdi satırı için yı çözümler ve çalıştırır -E PHP nu bütün girdi satırlarını işledikten sonra çalıştırır -H Harici araçlardan aktarılan bütün bağımsız değişkenleri gizler -S : Yerleşik HTTP sunucusu ile çalıştırır -t Yerleşik HTTP sunucusu için belge kök dizini belirtilir -s Kaynağı renklendirilmiş söz dizimi ile çıktılar -v Sürüm bilgilerini gösterir -w Kaynağı boşluklar ve yorumlardan arındırılmış olarak çıktılar -z Zend eklentisini yükler bağımsız değişkenler... Betiğe aktarılan bağımsız değişkenler. Eğer betik stdin'den okunuyorsa veya ilk bağımsız değişken - ile başlıyorsa -- bağımsız değişkenler kullanın --ini Yapılandırma dosyası isimlerini gösterir --rf işlevi hakkında bilgi gösterir --rc sınıfı hakkında bilgi gösterir --re eklentisi hakkında bilgi gösterir --rz Zend eklentisi hakkında bilgi gösterir --ri eklentisi için yapılandırmayı gösterir ]]> Komut satırı seçenekleri Seçenek Uzun Seçenek Açıklama -a --interactive PHP'yi etkileşimli çalıştırır.Daha ayrıntılı bilgi için Etkileşimli kabuk konusuna bakınız. -b --bindpath Harici FASTCGI Sunucusu kipi için dizin yolu (sadece CGI için). -C --no-chdir Betiğin bulunduğu dizine chdir yapılmaz (sadece CGI için). -q --no-header Sessiz kip. HTTP başlığının çıktılanmasını engeller (sadece CGI için). -T --timing Betiğin çalışma süresini sayı kere ölçer (sadece CGI için). -c --php-ini Bu seçenek &php.ini; dosyasının aranacağı dizini veya özel bir INI dosyasını (adı &php.ini; olmak zorunda değildir) belirtebilir. Örneğin: Eğer bu seçeneği belirtmezseniz, &php.ini; öntanımlı dizinlerde aranır. -n --no-php-ini &php.ini;yi tamamen görmezden gel. -d --define &php.ini;de izin verilen yapılandırma yönergelerinden herhangi birine özel değer atamanıza imkan verir. Söz dizimi: INI ayarını belirlemek için <literal>-d</literal> kullanımı -e --profile-info Hata ayıklayıcı/profilci için kullanılmak üzere genişletilmiş bilgi kipini etkinleştirir. -f --file Belirtilen dosya adını çözümler ve çalıştırır. seçeneği isteğe bağlıdır; verilmese de olur. Sadece çalıştırılacak dosya adını belirtmek yeterlidir. -h ve -? --help ve --usage Komut satırı seçenekleri tek satırlık açıklamalarıyla listelenir. -i --info phpinfo işlevini çağırır ve sonuçları yazdırır. Eğer PHP doğru çalışmıyorsa, php -i komutunu kullanmanız ve bilgi tablolarından önce herhangi bir hata iletisi yazdırılmış mı diye bakmanız tavsiye edilir. CGI kipini kullanırken çıktının HTML biçiminde olacağını ve bu nedenle çok büyük ve karmaşık olacağını dikkate alınız. -l --syntax-check Bu seçenek verilen PHP kodunun sadece söz dizimini denetlemek için uygun bir yol sağlar. Başarı halinde, No syntax errors detected in <filename> metni standart çıktıya yazılır ve kabuk dönüş kodu 0 olur. Başarısızlık halinde, iç çözümleyici hatasına ilaveten Errors parsing <filename> metni standart çıktıya yazılır ve kabuk dönüş kodu -1 olur. Bu seçenek ölümcül hataları bulamaz (tanımlanmamış işlevler gibi). Ölümcül hataları da denetlemek için seçeneğini kullanın. Bu seçenek seçeneği ile birlikte kullanılamaz. -m --modules - Yerleşik (ve yüklü) PHP ve Zend modüllerinin listelenmesi -r --run PHP'nin komut satırından çalıştırılmasına izin verir. PHP başlangıç ve bitiş etiketleri (<?php ve ?>) gerekmez ve eğer bulunurlarsa çözümleme hatasına neden olurlar. PHP'nin bu şekilde kullanımı halinde kabuk tarafından yapılan komut satırı değişken değişimleri ile çakışmamak için özen göstermek gerekir. - Çift tırnak kullanımında bir çözümleme hatasının gösterilmesi Buradaki sorun sh/bash kabuklarının çift tırnak " kullanıldığında bile değişken değişimi yapmalarından kaynaklanır. $foo değişkeni kabukta tanımlanmış olmayacağı için, PHP'ye çalıştırılmak üzere aktarılan kodda hiçbir şey olarak yorumlanacaktır: Doğru yol tek tırnak ' kullanımıdır. Tek tırnak içindeki değişkenler sh/bash tarafından dönüştürülmezler. - Kabuğun değişken dönüşümü yapmasını engellemek için tek tırnakların kullanımı int(1) ["E_WARNING"]=> int(2) ["E_PARSE"]=> int(4) ["E_NOTICE"]=> int(8) ["E_CORE_ERROR"]=> [...] ]]> Eğer sh/bash haricinde bir kabuk kullanıyorsanız, daha farklı sorunlarla karşılaşabilirsiniz. Bu gibi durumlarda &url.php.bugs; adresinde hata raporu açmaktan çekinmeyiniz. Kabuk değişkenlerini kodunuza almaya çalıştığınızda veya önceleme için ters bölü kullanımında sıkıntılar yaşayabilirsiniz. seçeneği &cli.sapi;'de bulunur, CGI SAPI'de bulunmaz. Bu seçenek çok temel kodlar için tasarlanmıştır. Bazı yapılandırma yönergeleri (örn. auto_prepend_file ve auto_append_file) bu kipte görmezden gelinir. -B --process-begin Standart girdi işlenmeden çalıştırılacak PHP kodudur. -R --process-code Her girdi satırı için işletilecek PHP kodudur. Bu kipte iki özel değişken bulunur: $argn ve $argi. $argn PHP'nin o anda işlediği satırı içerirken, $argi satır numarasını içerir. -F --process-file Her girdi satırı için işletilecek PHP dosyasıdır. -E --process-end Girdi işlendikten sonra işletilecek PHP kodudur. - Bir projedeki satır sayısını saymak için <option>-B</option>, <option>-R</option> ve <option>-E</option> seçeneklerinin kullanımı -S --server Yerleşik HTTP sunucusunu başlatır. -t --docroot Yerleşik HTTP sunucusuna belge kökünü belirtir. -s --syntax-highlight ve --syntax-highlighting Renklendirilmiş söz dizimi ile kaynak gösterimi. Bu seçenek dosyayı çözümlemek için içsel yöntemleri kullanır ve renklendirilmiş bir HTML sürümü üreterek standart çıktıya yazar. Bütün yaptığı HTML başlıkları olmadan <code> [...] </code> HTML etiketlerinden oluşan bir blok üretmektir. Bu seçenek seçeneği ile birlikte çalışmaz. -v --version - PHP ve Zend sürümleri ile <acronym>SAPI</acronym> ismini çıktılamak için <option>-v</option> kullanımı -w --strip Kaynağı boşluklar ve yorumlardan arındırılmış olarak gösterir. Bu seçenek seçeneği ile birlikte çalışmaz. -z --zend-extension Zend eklentisini yükler. Eğer sadece dosya ismi verilirse, PHP bu eklentiyi sisteminizde geçerli öntanımlı kütüphane yolundan yüklemeye çalışır (Linux sistemlerde genellikle /etc/ld.so.conf dosyasında belirtilir). Dosya adı tam yol bilgisi ile aktarılırsa sistem kütüphanesi arama yolu kullanılmaz. Bir dizin bilgisiyle göreceli bir dosya ismi kullanımı PHP'ye sadece geçerli dizine göreceli eklentinin yüklenmesini söyler. --ini Yapılandırma dosya isimlerini ve taranan dizinleri gösterir. - <literal>--ini</literal> örneği --rf --rfunction Verilen işlev veya sınıf yöntemi hakkında bilgi gösterir (örneğin, bağımsız değişken adlarını ve sayısını). Bu seçenek sadece PHP desteği ile derlendiyse mevcuttur. - Temel <literal>--rf</literal> kullanımı public function var_dump ] { - Parameters [2] { Parameter #0 [ $var ] Parameter #1 [ $... ] } } ]]> --rc --rclass Verilen sınıf hakkında bilgi gösterir (sabitler, özellikler ve yöntemler listesi). Bu seçenek sadece PHP desteği ile derlendiyse mevcuttur. - <literal>--rc</literal> örneği class Directory ] { - Constants [0] { } - Static properties [0] { } - Static methods [0] { } - Properties [0] { } - Methods [3] { Method [ public method close ] { } Method [ public method rewind ] { } Method [ public method read ] { } } } ]]> --re --rextension Verilen eklenti hakkında bilgi gösterir (&php.ini; seçenekleri, tanımlı işlevler, sabitler ve sınıflar listesi). Bu seçenek sadece PHP desteği ile derlendiyse mevcuttur. - <literal>--re</literal> örneği extension #19 json version 1.2.1 ] { - Functions { Function [ function json_encode ] { } Function [ function json_decode ] { } } } ]]> --rz --rzendextension Belirtilen Zend eklentisi için yapılandırma bilgisini gösterir (bu bilgi phpinfo ile de elde edilebilir). --ri --rextinfo Verilen eklenti için yapılandırma bilgisini gösterir (phpinfo ile aynı bilgiyi döndürür). Çekirdek yapılandırma bilgisi "main" eklenti adı kullanılarak bulunabilir. - <literal>--ri</literal> örneği enabled "Olson" Timezone Database Version => 2008.20 Timezone Database => internal Default timezone => Europe/Helsinki Directive => Local Value => Master Value date.timezone => no value => no value date.default_latitude => 31.7667 => 31.7667 date.default_longitude => 35.2333 => 35.2333 date.sunset_zenith => 90.583333 => 90.583333 date.sunrise_zenith => 90.583333 => 90.583333 ]]>
Uzun seçenekler (--no-chdir gibi) PHP 4.3.3'ten beri kullanılabilmektedir.
-rBRFEH, --ini ve --r[fcezi] seçenekleri sadece &cli;'de kullanılabilir.
PHP dosyalarının çalıştırılması Kullanım &cli.sapi; çalıştırmak istediğiniz PHP kodunu getirmek için üç farklı yola sahiptir: PHP'ye belli bir dosyayı çalıştırmasını söyleyerek. Her iki yolla da ( seçeneğini olsun olmasın) ornek_betik.php dosyası çalıştırılır. Çalıştırmak için herhangi bir dosyayı seçebilirsiniz - PHP betikleriniz .php uzantısı ile bitmek zorunda değildir, istediğiniz herhangi bir isim ve uzantıya sahip olabilirler. Doğrudan komut satırında işletmek üzere PHP kodunu aktararak. Kabuk değişken değişimi ve tırnak kullanımı için özel bir çaba sarfetmek gerekir. Örneği dikkatle okuyunuz, hiçbir başlangıç veya bitiş etiketi yok! seçeneği bunlara ihtiyaç duymaz. Bunların kullanımı çözümleme hatasına yol açar. Çalıştırılacak PHP kodunu standart girdiden (STDIN) yollamak suretiyle. Bu, PHP kodunu dinamik olarak oluşturma ve bunu çalıştırma yeteneği sağlar. Örneğin: nihai_sonuc.txt ]]> Kodu çalıştırmak için bu üç yol birlikte kullanılamaz. Her kabuk uygulamasındaki gibi, PHP çalıştırılabiliri bir takım bağımsız değişkenler alabildiği gibi PHP betiğiniz de bağımsız değişkenler alabilir. Betiğinize aktarabileceğiniz bağımsız değişken sayısı PHP tarafından sınırlandırılmamıştır (kabukta aktarılabilecek karakter sayısı sınırlıdır; genellikle bu sınıra ulaşmazsınız). Betiğinize aktarılan bağımsız değişkenler $argv küresel dizisinde bulunur. Sıfır indisi her zaman betik adını içerir. PHP kodu standart girdiden veya komut satırı seçeneğiyle çalıştıysa betik adı "Standard input code" olur; PHP 7.2.0 öncesinde - idi. Eğer kod standart girdiden bir boru ile çalıştırılırsa bu yine geçerlidir. İkinci kayıtlı küresel değişken $argc'dir ve $argv dizisindeki eleman sayısını içerir (betiğe aktarılan bağımsız değişken sayısını değil). Betiğinize aktarmak istediğiniz bağımsız değişkenler - karakteriyle başlamadığı sürece, özel bir şeye dikkat etmeniz gerekmez. Betiğinize - ile başlayan bir bağımsız değişken aktarımı sorun yaratır çünkü PHP yorumlayıcısı bunu kendisinin işlemesi gerektiğini düşünecektir. Bunu önlemek için, bağımsız değişken listesi ayracı olan -- kullanın, bunu izleyen her bağımsız değişken ellenmeden betiğinize aktarılır. [args...] [...] # Bu '-h' bağımsız değişkenini betiğinize aktarır ve # PHP'nin bağımsız değişkeni görmesini önler $ php -r 'var_dump($argv);' -- -h array(2) { [0]=> string(1) "-" [1]=> string(2) "-h" } ]]> Kabuk betikleri için PHP farklı bir yoldan kullanılabilir. İlk satırı #!/usr/bin/php ile başlayan bir betik yazabilirsiniz. Bunu takip eden satırlara başlangıç ve bitiş etiketlerine sahip normal PHP kodunuzu yerleştirebilirsiniz. Dosyanın çalıştırma izinlerini ayarladığınızda (örn. chmod +x deneme) betiğiniz normal bir kabuk veya perl betiği gibi işletilir. - PHP betiğini kabuk betiği olarak çalıştırmak ]]> Geçerli dizindeki bu dosyanın isminin deneme olduğunu varsayarsak, aşağıdakini yapabiliriz: string(6) "./deneme" [1]=> string(2) "-h" [2]=> string(2) "--" [3]=> string(3) "foo" } ]]> Gördüğünüz gibi, bu durumda betiğinize - ile başlayan bağımsız değişken aktarırken hiçbir şeye dikkat etmeniz gerekmez. PHP çalıştırılabiliri HTTP sunucusundan tamamen bağımsız olarak PHP betikleri çalıştırmak için kullanılabilir. Eğer Unix sistemi üzerindeyseniz, PHP betiğinizin başına özel bir #! satırı eklemeli ve dosyanızı çalıştırılabilir yapmalısınız; böylece sistem betiğinizi hangi programın çalıştıracağını bilir. Windows üzerinde .php dosyalarına çift tıklama seçeneği ile php.exeilişkilendirebilir veya betiği PHP üzerinden çalıştıracak bir yığın dosyası yapabilirsiniz. Unix'de çalışması için betiğe eklenen ilk satır Windows'da sorun çıkarmaz, böylece platformdan bağımsız programlar yazabilirsiniz. Örnek basit bir komut satırı PHP programı aşağıdaki gibi olabilir. - Komut satırından çalıştırılması planlanan betik (betik.php) Bu tek seçenekli bir komut satırı PHP betiğidir. Kullanımı: yazdırmak istediğiniz bir kelime olabilir. --help, -help, -h, veya -? seçenekleriyle, bu yardımı alabilirsiniz. ]]> Yukarıdaki betikte, bu dosyanın PHP tarafından çalıştırılması gerektiğini belirten özel bir ilk satır kullandık. Burada &cli; sürümü ile çalışıyoruz, böylece HTTP başlık çıktıları olmayacak. PHP ile komut satırı uygulamaları yazarken kullanabileceğiniz iki değişken vardır: $argc ve $argv. Birincisi bağımsız değişken sayısından bir fazlasıdır (çalışan betiğin adı). İkincisi bağımsız değişkenleri içeren bir dizidir, sıfır numarayla başlar ve ilk elemanında betik adını içerir ($argv[0]). Yukarıdaki programda birden farklı sayıda bağımsız değişken olup olmadığı kontrol ettik. Ayrıca eğer bağımsız değişken , , veya ise yardım iletisini yazdırdık ve $argv[0] ile betik adını dinamik olarak yazdırdık. Bunlardan başka bağımsız değişkenler aldıysak bunlar yerine onları yazdırdık. Eğer yukarıdaki betiği Unix üzerinde çalıştırmak isterseniz betiği çalıştırılabilir yapmalı ve betik.php echothis veya betik.php -h ile çağırmalısınız. Windows'da bu iş için bir yığın dosyası yapabilirsiniz: - Bir komut satırı PHP betiği çalıştırmak için yığın dosyası (betik.bat) Yukarıdaki programı betik.php olarak adlandırdığınız ve C:\php\php.exe içinde &cli;'nin php.exe olduğu varsayılarak bu yığın dosyası sizin eklediğiniz seçeneklerle çalışacaktır: betik.bat echothis veya betik.bat -h. PHP'deki komut satırı uygulamalarını iyileştirmek için kullanabileceğiniz işlevlerle ilgili bilgi için Readline eklentisinin belgesine bakınız. Windows üzerindeyseniz PHP, Microsoft Windows üzerinde PHP Komut Satırı bölümünde açıklandığı gibi .php uzantısına veya C:\php\php.exe çalıştırılabilirinin belirtilmesine gerek kalmadan çalıştırılmak üzere yapılandırılabilir. Windows'ta PHP'yi gerçek bir kullanıcı hesabı altında çalıştırmanız önerilir. Aksi takdirde, bir ağ hizmeti altında çalışırken, "Hesap adları ile güvenlik kimlikleri arasında hiçbir eşleştirme yapılmadığı" için belirli işlemler başarısız olur.
Giriş/Çıkış Akımları G/Ç Akımları Kabuk ortamında G/Ç akımları ile kolay çalışmak için şu sabitler tanımlanmıştır: &cli;'ye özel Sabitler Sabit Açıklama STDIN stdin'e açılmış bir akımdır. Aşağıdaki örnek akımı açıp geleni kaydeder: ]]> Eğer stdin'den tek satır okumak istenirse şu kullanılabilir: ]]> STDOUT stdout'a açılmış bir akımdır. Aşağıdaki örnek akımı açıp gideni kaydeder: ]]> STDERR stderr'e açılmış bir akımdır. Aşağıdaki örnek akımı açıp çıktıyı kaydeder: ]]>
Yukarıda verilene göre, örneğin stderr için bir akım açmanız gerekmez, ancak akım kaynağı yerine sabit kullanabilirsiniz: Betik sonlandığında PHP otomatik olarak akımları kapattığı için sizin ayrıca kapatmanız gerekmez. Bu sabitler, PHP betiğinin stdin'den okunması halinde mevcut değildir.
Etkileşimli kabuk PHP seçeneği ile derlenmişse, &cli.sapi; seçeneği kullanıldığında etkileşimli bir kabuk açar. PHP 7.1.0'dan itibaren etkileşimli kabuk, readline eklentisi etkinse, Windows altında da kullanılabilmektedir. Etkileşimli kabuğu kullanarak PHP kodu yazabilir ve bunları doğrudan çalıştırabilirsiniz. - Etkileşimli kabuk kullanarak kod çalıştırmak echo 5+8; 13 php > function ikiEkle($n) php > { php { return $n + 2; php { } php > var_dump(ikiEkle(2)); int(4) php > ]]> Etkileşimli kabuk ayrıca, işlevler, sabitler, sınıf isimleri, değişkenler statik yöntem çağrıları ve sınıf sabitleri için sekme ile kod tamalama özelliklerine sahiptir. - Kod tamamlama Sekme tuşuna iki kere basarak yazdığınız harflerle başlayan anahtar sözcükleri listeleyebilirsiniz: strp[TAB][TAB] strpbrk strpos strptime php > strp ]]> Olası tek seçenek olduğunda sekme tuşuna ilk basışınızda sözcük aynı satırda tamamlanır: strpt[TAB]ime( ]]> Tamamlama, bulunduğunuz etkileşimli kabuk ortamında tanımlanmış isimler için de çalışacaktır:: $fooThisIsAReallyLongVariableName = 42; php > $foo[TAB]ThisIsAReallyLongVariableName ]]> Etkileşimli kabukta yukarı ve aşağı ok tuşlerını kullanarak geçmiş üzerinde dolaşabilirsiniz. Geçmiş ~/.php_history dosyasına kaydedilir. cli.pager ve cli.prompt &php.ini; değişkenleri devreye girmiştir. cli.pager ile çıktıyı ekranda göstermek yerine çıktıyı sayfalayacak bir programda (less gibi) göstermek mümkündür. cli.prompt ile php > çıktısını değiştirebilirsiniz. &php.ini; ayarlarını etkileşimli kabukta bir kısayol ile değiştirmek de mümkündür. - Etkileşimli kabukta &php.ini; ayarlarını değiştirmek cli.prompt ile: #cli.prompt=hello world :> hello world :> ]]> Ters tırnakları kullanarak komut isteminde kod çalıştırabilirsiniz: #cli.prompt=`echo date('H:i:s');` php > 15:49:35 php > echo 'hi'; hi 15:49:43 php > sleep(2); 15:49:45 php > ]]> Sayfalayıcı olarak less belirtmek: #cli.pager=less php > phpinfo(); (çıktı less içinde gösterilir) php > ]]> cli.prompt içinde bir kaç öncelem belirtilebilir: - <parameter>cli.prompt</parameter> öcelemleri Öncelem Açıklama \e Komut istemine renk eklemek için kullanılır. Örnek: \e[032m\v \e[031m\b \e[34m\> \e[0m \v PHP sürümü. \b Neyin içindekinin engelleneceğini belirtir. Örneğin, çok satırlı bir açıklama içinde olmayı belirtmek için: /* Dış kapsam php tarafından belirtilir. \> Komut istemi karakterini belirtir. By default this is > öntanımlı olsa da kabuk sonlandırılmamış bir dizge veya blok içindeyse bu değişir. Olası karakterler: ' " { ( >
auto_prepend_file ve auto_append_file ile içselleştirilen dosyalar bu kipte bazı sınırlamalarla çözümlenebilir; örneğin çağrılmadan önce işlevler bu dosyalarda tanımlanabilir.
Etkileşimli kip Readline eklentisi kullanılabiliyorsa PHP 8.1.0 öncesinde, seçeneği kullanılarak yapılan bir &cli.sapi; çağrısı etkileşimli kipe girilmesini sağlardı. Bu kipte, eksiksiz bir PHP betiğinin standart girdiden verilmesi gerekir. POSIX'te CRTL+d veya Windows'ta CTRL+z ve ardından ENTER tuşlanmasıyla bu betik çalıştırılır. Bu temelde seçeneği kullanmaksızın yapılan bir &cli.sapi; çağrısına eşdeğerdir. PHP 8.1.0 itibariyle, seçeneği kullanılarak yapılan bir &cli.sapi; çağrısı, readline eklentisi kullanılabilir değilse başarısız olur.
Yerleşik HTTP sunucusu Bu HTTP sunucusu uygulama geliştirmeye yardımcı olmak üzere tasarlanmıştır. Ayrıca, denetimli bir ortam olarak uygulamaların denenmesi amacıyla da kullanılabilir. Herşeyiyle eksiksiz bir HTTP sunucusu olarak tasarlanmamıştır. Halka açık ağlarda kullanılmamalıdır. &cli.sapi; yerleşik bir HTTP sunucusu içerir. Bu HTTP sunucusu tek evreli bir süreç çalıştırır. Dolayısıyla, PHP uygulamaları istek engellendiği zaman yavaşlayıp duracaktır. İstenen adres PHP'nin başlatıldığı çalışma dizinine göre sunulur. Bu kök dizin PHP çalıştırılırken -t seçeneği kullanılarak değiştirlebilir. İstek bir dosya belirtmiyorsa belirtilen dizindeki index.php veya index.html dosyası sunulur. Bu iki dosya da mevcut değilse index.php veya index.html araması üst dizinde devam eder ve bu belge kök dizinine ulaşılıncaya dek devam eder. Bulunduğu takdirde, döndürülür ve URI'nin devamına $_SERVER['PATH_INFO'] atanır. Aksi takdirde 404 yanıt kodu döndürülür. İstenen adres bir dosya belirtmezse, belirtilen dizindeki index.php veya index.html gösterilir. Bu dosyalar da mevcut değilse, bir 404 yanıtı döndürülür. Aşağıdaki uzantılara sahip dosyalar için standart MIME türleri döndürülür: .3gp .apk .avi .bmp .css .csv .doc .docx .flac .gif .gz .gzip .htm .html .ics .jpe .jpeg .jpg .js .kml .kmz .m4a .mov .mp3 .mp4 .mpeg .mpg .odp .ods .odt .oga .ogg .ogv .pdf .png .pps .pptx .qt .svg .swf .tar .text .tif .txt .wav .webm .wmv .xls .xlsx .xml .xsl .xsd .zip PHP 7.4.0'dan itibaren, yerleşik HTTP sunucusu, birden fazla eşzamanlı istek gerektiren kodu sınamak için birden fazla süreci çatallamak üzere yapılandırılabilir. Sunucu başlatılmadan önce PHP_CLI_SERVER_WORKERS ortam değişkeni istenen süreç sayısına ayarlanmalıdır. Bu özellik Windows'ta desteklenmez. Bu deneysel özellik üretim ortamında kullanmak için tasarlanmamıştır. Genelde yerleşik HTTP sunucuları üretim ortamında kullanmak için tasarlanmaz. - HTTP sunucusunun başlatılması Uçbirim çıktısı: http://localhost:8000/ ve http://localhost:8000/myscript.html isteklerinden sonra uçbirim çıktısı şuna benzer: PHP 7.4.0'dan önce, sembolik bağlantılı statik kaynaklara, yönlendirici betiği bunları işlemediği sürece Windows'ta erişilemezdi. - Belge kök dizini belirterek başlatma Uçbirim çıktısı: - Yönlendirici betik belirtmek Görüntü isteklerinde görüntüler gösterildiği halde bir HTML dosyası istendiğinde "Welcome to PHP" göstermek: Welcome to PHP

"; } ?>]]>
- CLI Sunucusunda kullanmadan önce betiği sınamak Bir yönlendirici betiği geliştirici CLI sunucusunda kullandıktan sonra asıl HTTP sunucusunda yeniden kullanmak: ]]> - Desteklenmeyen Dosya Türlerinin İşlenmesi MIME türleri CLI sunucusu tarafından işlenmeyen statik kaynakları sunmanız gerekirse: ]]> - CLI sunucusuna uzak makinelerden erişim HTTP sunucusuna port 8000'den şöyle erişebilirsiniz: Yerleşik HTTP sunucusu internette kullanılmamalıdır.
INI Ayarları CLI SAPI &ConfigureOptions; &Name; &Default; &Changeable; &Changelog; cli_server.color "0" INI_ALL
&ini.descriptions.title; cli_server.color bool Geliştirici HTTP sunucusunun uçbirim çıktısında ANSI renk kodlaması kullanımını etkinleştirir.