2010-01-31 23 views
10

Başlık sessizdir. Komut dosyası, HTTP isteği veya komut satırı ile çağrıldığında sunucu tarafında bilmek zorundayım. $_SERVER['argv'] veya $_SERVER['argc']'u inceleyebilirim.
pragmatik yolu nedir?http ve cli istekleri nasıl ayırt edilir?

cevap

12

http://us3.php.net/manual/en/function.php-sapi-name.php

<?php 
echo PHP_SAPI; 
echo php_sapi_name(); 
?> 
+1

Aferin, teşekkürler. – erenon

+0

+1 Bu, gitmenin yolu. $ _SERVER değişkenlerini ve bunun gibi şeyleri kontrol etme konusunda problem yaşadım. Bu her zaman çalışır. –

+0

+1 bu işlev hakkında bilmiyordu, teşekkürler! –

2

$_SERVER numaralı anahtarlara bakın. Bir kısaltma isteği ise, "HTTP" ile başlayan herhangi bir görmemelisiniz. İşte


bazı basit bir test kodu:

<?php 

foreach($_SERVER as $k=>$v){ 
    echo "$k: $v\n"; 
} 

?> 

Ve burada çıkışı: hayır $_SERVER['HTTP_HOST'] ayarlanırsa

[email protected]:~/so$ php cli.php |grep HTTP 
[email protected]:~/so$ 
+0

aranırsa aracılığıyla veri göndermek zorunda yok sadece tek bir değeri test edebileceğiniz zaman bir döngüye ihtiyaç duyarsınız. –

+0

Kemp, OP'nin sorusu, özellikle argüman –

1

Muhtemelen kontrol? Çünkü bu değişkenin, istek üzerine bir dosyaya gönderilen İstek Başlıkları aracılığıyla doldurulduğuna ve komut satırının büyük olasılıkla üstbilgileri göndermediğine inanıyorum.

+0

Ha için alternatifler için sorulan sorularda 1 saniye içinde ... –

0

Genel değişkenin $argc ayarlanıp ayarlanmadığını kontrol edebilirsiniz.

0

Ben

+0

Bunun ayarlanmadığından emin değilim. Özellikle, eğer PHP dosyanızı uzaktan çalıştırıyorsanız .. –

+0

$ _SERVER dizisinin HTTP işlemlerine ayrıldığını düşünüyorum, ancak haklı olabilirsiniz. Yerel ve uzaktan yürütme arasında farklı olduklarından emin olduğumdan, hala içinde bulunan çeşitli üyeler arasında olmaya değer. –

0

if(isset($_SERVER['SERVER_NAME'])) atmanız önerilir Ama http (tcp) zaten olursa olsun komut cli veya bir tarayıcıdan

+0

Sadece yanlıştasınız. – erenon

İlgili konular