PHP kodu komut satırından nasıl çalıştırılır?


163

if(function_exists("my_func")) echo 'function exists';Ayrı bir php dosyası kullanmak zorunda kalmadan doğrudan komut satırı gibi tek bir php deyimi yürütmek istiyorum .

Bu nasıl mümkün olaiblir ?


1
kullanıcı tanımlı işlev içeren başka dosyaları kullanmadan function_exists () yapmak, başka yollarla bulabileceğiniz PHP sürümünü test etmek dışında çok iyi olmayacaktır. Hangi işlevi test etmek istiyorsunuz?
Matt Gibson

Bu işlevi test etmek için arıyorum: sg_load ()
Steve

2
Gerçekten ne istediğiniz gibi geliyor kaynakguardy php uzantısı etkin olup olmadığını bulmak için?
Matt Gibson

2
o zaman phpinfo () size söylemelidir.
jpic

Yanıtlar:


256

Komut satırında PHP yapacaksanız, phpsh, iyi bir PHP kabuğu yüklemenizi öneririm . Çok daha eğlenceli.

Her neyse, php komutu kodu komut satırından yürütmek için iki anahtar sunar :

-r <code>        Run PHP <code> without using script tags <?..?>
-R <code>        Run PHP <code> for every input line

Php's -r anahtarını şu şekilde kullanabilirsiniz :

php -r 'echo function_exists("foo") ? "yes" : "no";'

Etmeliyiz ki PHP komutu üstündeki çıkış no ve dönüşleri 0 gördüğünüz gibi:

>>> php -r 'echo function_exists("foo") ? "yes" : "no";'
no
>>> echo $? # print the return value of the previous command
0

Başka bir komik anahtar php -a :

-a               Run as interactive shell

Bu var sıralama oranla sakat phpsh ama yüklemek istemiyorsanız almak için facebook tarafından yapılan php için müthiş interaktif kabuk sekme tamamlama, tarih ve benzeri , daha sonra örneğin -a kullanın :

>>> php -a
Interactive shell

php > echo function_exists("foo") ? "yes" : "no";
no
php > 

Kutumda * es * ( Ubuntu ve Arch üzerinde test edilmiş) gibi çalışmıyorsa , muhtemelen PHP kurulumunuz bulanık veya bozuktur . Bu komutu çalıştırırsanız:

php -i | grep 'API'

Sen olmalıdır bkz:

Server API => Command Line Interface

Bunu yapmazsanız , bu belki başka bir komutun CLI SAPI'yi sağlayacağı anlamına gelir . Php-cli'yu deneyin, belki de işletim sisteminizde bulunan bir paket veya komuttur.

Eğer yoksa php komut CLI (Komut Satırı Arayüzü) SAPI (Sunucu API) kullanır görüyoruz, daha sonra çalıştırmak php -h | grep codeiçin hangi çılgın anahtarını bulmak - yıl- için bu değişmedi olarak sürümü / kurulumunda kod çalıştırmasına olanak tanır.

Kutularımda çalıştığından emin olmak için birkaç örnek daha:

>>> php -r 'echo function_exists("sg_load") ? "yes" : "no";' 
no
>>> php -r 'echo function_exists("print_r") ? "yes" : "no";' 
yes

Ayrıca, bir uzantının CGI veya Apache SAPI'ye değil CLI'ye yüklenebileceğini unutmayın. Birkaç PHP SAPI'nin farklı php.ini dosyaları kullanması muhtemeldir , örn. /etc/php/cli/php.iniVs /etc/php/cgi/php.inivs /etc/php/apache/php.inibir Gentoo kutusunda. Hangi ini dosyasının kullanıldığını öğrenin php -i | grep ini.


Belki php kurulum bozuk. Anlamak için ipuçları da dahil olmak üzere cevabımı güncelledim.
jpic

Sizin için yararlı olabilecek php -a hakkında bir not eklendi.
jpic

6
Phpsh'nin artık yazarı (Facebook) tarafından korunmadığını ve Google Grupları sayfasındaki birisinin 2012'de "phpsh'nin artık desteklenmediğini veya artık yararlı olmadığını" söylediğini unutmayın . Geliştirilmiş bir php konsolu için Boris REPL'e bakabilirsiniz .
Ben Creasy

3

Komut satırında:

php -i | grep sourceguardian

Eğer oradaysa, o zaman biraz metin alırsınız. Değilse, hiçbir şey alamazsınız.


4
Ya körüm ya da bu cevabın soru ile ilgisi yok. Bu cevabın, " PHP kodunu .phpdosyaya kaydetmeden doğrudan komut satırından PHP kodunu nasıl çalıştırırım ? "
trejder

15
@trejder Bir an için yanlış soruyu cevaplayıp yanıtlamadığımı merak ettim ama sonra düzenleme geçmişine ve yorumlara baktım. Bu OP'nin gerçekten ihtiyaç duyduğu şeyleri cevaplar: belirli bir PHP uzantısının yüklenip yüklenmediğini bulma. Soru o zamandan beri yeniden ifade edildi, bu yüzden şimdi çok iyi uymuyor.
Matt Gibson

3

Kullanabilirsiniz :

 echo '<?php if(function_exists("my_func")) echo "function exists"; ' | php

" <? = " Kısa etiketi de yardımcı olabilir:

 echo '<?= function_exists("foo") ? "yes" : "no";' | php
 echo '<?= 8+7+9 ;' | php

Kapanış etiketi "?>" İsteğe bağlıdır, ancak son ";" !


2
Bu, 7 yaşındaki kabul edilen cevaptan daha fazla sorun gibi görünüyor. Kullanarak php -rPHP etiketlerini açma konusunda endişelenmenize gerek yoktur.
miken32

1

Komut satırından PHP kullanma

kullanmak " yerine ' -r ile cli sürümünü kullanırken pencerelerde

php -r "echo 1"

- doğru

php -r 'echo 1'

- yanlış

  PHP Parse error:  syntax error, unexpected ''echo' (T_ENCAPSED_AND_WHITESPACE), expecting end of file in Command line code on line 1
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.