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.
php ornek_betik.php php -f ornek_betik.php
Her iki yolla da (-f 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.
Bilginize:
Eğer betiklerinize değiştirgeler aktarmanız gerekirse -f seçeneğini kullandığınızda ilk değiştirge olarak
--
aktarmanız gerekir.
Doğrudan komut satırında işletmek üzere PHP kodunu aktararak.
php -r 'print_r(get_defined_constants());'
Kabuk değişken değişimi ve tırnak kullanımı için özel bir çaba sarfetmek gerekir.
Bilginize:
Örneği dikkatle okuyunuz, hiçbir başlangıç veya bitiş etiketi yok! -r 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:
$ bir_uygulama | bir_suzgec | php | sort -u > nihai_sonuc.txt
Her kabuk uygulamasındaki gibi, PHP çalıştırılabiliri bir takım
değiştirgeler alabildiği gibi PHP betiğiniz de değiştirgeler alabilir.
Betiğinize aktarabileceğiniz değiştirge 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 değiştirgeler
$argv küresel dizisinde bulunur. Sıfır indisi her zaman
betik adını içerir. PHP kodu standart girdiden veya -r
komut satırı seçeneğiyle çalıştıysa betik adı -
olur.
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 değiştirge sayısını değil).
Betiğinize aktarmak istediğiniz değiştirgeler -
karakteriyle başlamadığı sürece, özel bir şeye dikkat etmeniz gerekmez.
Betiğinize -
ile başlayan bir değiştirge aktarımı sorun
yaratır çünkü PHP yorumlayıcısı bunu kendisinin işlemesi gerektiğini
düşünecektir. Bunu önlemek için, değiştirge listesi ayracı olan
--
kullanın, bunu izleyen her değiştirge ellenmeden
betiğinize aktarılır.
# Bu verilen kodu çalıştırmaz fakat PHP kullanımını gösterir $ php -r 'var_dump($argv);' -h Usage: php [options] [-f] <file> [args...] [...] # Bu '-h' değiştirgesini betiğinize aktarır ve # PHP'nin değiştirgeyi 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.
Örnek 1 - PHP betiğini kabuk betiği olarak çalıştırmak
#!/usr/bin/php
<?php
var_dump($argv);
?>
Geçerli dizindeki bu dosyanın isminin deneme olduğunu varsayarsak, aşağıdakini yapabiliriz:
$ chmod +x deneme $ ./deneme -h -- foo array(4) { [0]=> 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
değiştirge 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.
Örnek 2 - Komut satırından çalıştırılması planlanan betik (betik.php)
#!/usr/bin/php
<?php
if ($argc != 2 || in_array($argv[1], array('--help', '-help', '-h', '-?'))) {
?>
Bu tek seçenekli bir komut satırı PHP betiğidir.
Kullanımı:
<?php echo $argv[0]; ?> <secenek>
<secenek> yazdırmak istediğiniz bir kelime olabilir.
--help, -help, -h,
veya -? seçenekleriyle, bu yardımı alabilirsiniz.
<?php
} else {
echo $argv[1];
}
?>
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 değiştirge sayısından bir fazlasıdır (çalışan betiğin adı). İkincisi değiştirgeleri 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 değiştirge olup olmadığı kontrol ettik. Ayrıca eğer değiştirge --help, -help, -h veya -? ise yardım iletisini yazdırdık ve $argv[0] ile betik adını dinamik olarak yazdırdık. Bunlardan başka değiştirgeler 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:
Örnek 3 - Bir komut satırı PHP betiği çalıştırmak için yığın dosyası (betik.bat)
@echo OFF "C:\php\php.exe" script.php %*
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.
Bilginize:
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.