Chciałbym wykonać pojedynczą instrukcję php, jak if(function_exists("my_func")) echo 'function exists';
bezpośrednio z wiersza poleceń, bez konieczności używania oddzielnego pliku php.
Jak to jest możliwe ?
Chciałbym wykonać pojedynczą instrukcję php, jak if(function_exists("my_func")) echo 'function exists';
bezpośrednio z wiersza poleceń, bez konieczności używania oddzielnego pliku php.
Jak to jest możliwe ?
Odpowiedzi:
Jeśli zamierzasz robić PHP w wierszu poleceń, polecam zainstalowanie phpsh, przyzwoitej powłoki PHP . To dużo fajniejsze.
W każdym razie polecenie php oferuje dwa przełączniki do wykonywania kodu z wiersza poleceń :
-r <code> Run PHP <code> without using script tags <?..?>
-R <code> Run PHP <code> for every input line
Możesz użyć przełącznika -r php jako takiego:
php -r 'echo function_exists("foo") ? "yes" : "no";'
Powyższe polecenie PHP powinno wyświetlać no
i zwracać, 0
jak widać:
>>> php -r 'echo function_exists("foo") ? "yes" : "no";'
no
>>> echo $? # print the return value of the previous command
0
Kolejnym zabawnym przełącznikiem jest php -a :
-a Run as interactive shell
To trochę kiepskie w porównaniu do phpsh , ale jeśli nie chcesz instalować niesamowitej interaktywnej powłoki dla php stworzonej przez Facebooka, aby uzyskać wypełnienie kart, historię itd. , Użyj -a jako takiego :
>>> php -a
Interactive shell
php > echo function_exists("foo") ? "yes" : "no";
no
php >
Jeśli to nie działa na twoim pudełku, tak jak na moim pudełku * es * ( testowane na Ubuntu i Arch), prawdopodobnie twoja konfiguracja PHP jest rozmyta lub zepsuta . Jeśli uruchomisz to polecenie:
php -i | grep 'API'
ty powinno zobaczyć:
Server API => Command Line Interface
Jeśli nie , oznacza to, że być może inna komenda zapewni CLI SAPI . Wypróbuj php-cli, może to pakiet lub polecenie dostępne w twoim systemie operacyjnym.
Jeśli zrobisz że twoje polecenie php używa CLI (interfejs wiersza poleceń) SAPI (API serwera), uruchom, php -h | grep code
aby dowiedzieć się, który szalony przełącznik - ponieważ nie zmienił się od roku - pozwala na uruchomienie kodu w twojej wersji / konfiguracji.
Kolejne kilka przykładów, aby upewnić się, że działa na moich pudełkach:
>>> php -r 'echo function_exists("sg_load") ? "yes" : "no";'
no
>>> php -r 'echo function_exists("print_r") ? "yes" : "no";'
yes
Należy również zauważyć, że możliwe jest, że rozszerzenie jest ładowane w CLI, a nie w CGI lub Apache SAPI. Jest prawdopodobne, że kilka PHP SAPI używa różnych plików php.ini , np. /etc/php/cli/php.ini
Vs /etc/php/cgi/php.ini
vs /etc/php/apache/php.ini
na Gentoo box. Dowiedz się, który plik ini jest używany z php -i | grep ini
.
W wierszu poleceń:
php -i | grep sourceguardian
Jeśli tam jest, otrzymasz tekst. Jeśli nie, nic nie dostaniesz.
.php
pliku? ”?
Możesz użyć :
echo '<?php if(function_exists("my_func")) echo "function exists"; ' | php
Pomocny może być też krótki tag „ <? = ”:
echo '<?= function_exists("foo") ? "yes" : "no";' | php
echo '<?= 8+7+9 ;' | php
Tag zamykający „?>” Jest opcjonalny, ale nie zapomnij o ostatnim „;” !
php -r
nie musisz martwić się o otwieranie tagów PHP.
Używanie PHP z wiersza poleceń
użyj " zamiast " w oknach, gdy używasz wersji CLI z -r
php -r "echo 1"
- dobrze
php -r 'echo 1'
- niepoprawne
PHP Parse error: syntax error, unexpected ''echo' (T_ENCAPSED_AND_WHITESPACE), expecting end of file in Command line code on line 1