PHP dosyalarının çalıştırılması
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 (-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.
-
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.
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:
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 -r
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.
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
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.
Ö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 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 --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 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:
Ö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.