2012-03-01 14 views
107

Chciałbym wykonać pojedynczej instrukcji php, takich jak if(function_exists("my_func")) echo 'function exists'; bezpośrednio z wiersza poleceń, bez konieczności korzystania z oddzielnego pliku php.Jak wykonać kod PHP z wiersza poleceń?

Jak to jest możliwe?

+1

Wykonywanie funkcji function_exists() bez użycia innych plików zawierających funkcję zdefiniowaną przez użytkownika nie będzie zbyt dobre, z wyjątkiem testowania wersji PHP, którą można znaleźć w inny sposób. Jaką funkcję chcesz przetestować? –

+0

Szukam testowania tej funkcji: sg_load() – Steve

+2

Brzmi tak, jak naprawdę chcesz, aby dowiedzieć się, czy włączone jest rozszerzenie php sourceguardian? –

Odpowiedz

173

Jeśli zamierzasz robić PHP w linii poleceń, polecam zainstalować phpsh, a decent PHP shell. To o wiele więcej zabawy.

Zresztą polecenie php oferuje dwa przełączniki na wykonanie kodu z linii poleceń:

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

Można wykorzystać PHP -r przełączyć jako takie:

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

Powyższy Polecenie PHP powyżej powinno być wyjścioweno i zwraca0 jak widać:

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

Kolejny zabawny przełącznik jest php -a:

-a    Run as interactive shell 

To rodzaj lame porównaniu phpsh, ale jeśli nie chcesz instalować the awesome interactive shell for php made by facebook to get tab completion, history, and so on, a następnie użyj -a jako taki:

>>> php -a 
Interactive shell 

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

Jeśli to nie działa na pudełku jak na moim komputerze * es * (badanego na Ubuntu i Arch), następnie prawdopodobnie Twoja konfiguracja PHP jest postrzępiony lub uszkodzony. Po uruchomieniu tego polecenia:

php -i | grep 'API' 

Ty powinny patrz:

Server API => Command Line Interface 

Jeśli nie, oznacza to, że może kolejna komenda zapewnia CLI SAPI. Wypróbuj php-cli, może to pakiet lub polecenie dostępne w twoim systemie operacyjnym.

Jeśli nie zobaczyć, że polecenie php używa CLI (Command Line Interface) SAPI (Server API), a następnie uruchomić php -h | grep code do dowiedzieć się przełącznik, który szalone - co nie zmieniło się year- pozwala do uruchomienia kodu w twojej wersji/konfiguracji.

Innym kilka przykładów, by upewnić się, że działa na moich polach:

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

Należy również pamiętać, że jest to możliwe, że rozszerzenie jest ładowany w CLI, a nie w CGI lub Apache SAPI.Jest prawdopodobne, że kilka aplikacji SAPI PHP używa różnych plików php.ini, np., np. /etc/php/cli/php.ini vs /etc/php/cgi/php.ini vs /etc/php/apache/php.ini na polu Gentoo. Dowiedz się, który plik ini jest używany z php -i | grep ini.

+3

nic nie zwraca. – Steve

+0

Może Twoja konfiguracja php jest zepsuta. Zaktualizowałem swoją odpowiedź, w tym wskazówki, jak to rozgryźć. – jpic

+0

Dodano notatkę o php -a, która może ci się przydać. – jpic

1

W wierszu poleceń:

php -i | grep sourceguardian 

Jeśli jest tam, wtedy dostaniesz jakiś tekst. Jeśli nie, nic nie dostaniesz.

+0

Albo jestem ślepy, albo ta odpowiedź nie ma nic wspólnego z pytaniem. Jak ta odpowiedź ma odpowiedzieć na pytanie "Jak uruchomić kod PHP bezpośrednio z wiersza poleceń, bez zapisywania kodu PHP do pliku .php?"? – trejder

+6

@trejder Przez chwilę zastanawiałem się, czy odpowiedziałem na niewłaściwe pytanie, ale potem spojrzałem na historię edycji i komentarze. Odpowiada to na to, czego naprawdę potrzebował OP: ustalenie, czy dane rozszerzenie PHP zostało załadowane. Od tego czasu pytanie zostało ponownie sformułowane, więc teraz nie pasuje tak dobrze. –

Powiązane problemy