2012-03-01 46 views
107

Me gustaría ejecutar una sola instrucción php como if(function_exists("my_func")) echo 'function exists'; directamente con la línea de comandos sin tener que usar un archivo php separado.¿Cómo ejecutar el código PHP desde la línea de comando?

¿Cómo es posible?

+1

haciendo funcionar_existencia() sin usar ningún otro archivo que contenga la función definida por el usuario no va a ser muy útil, excepto para probar la versión de PHP, que puede encontrar de otras maneras. ¿Para qué función quieres probar? –

+0

Estoy buscando la prueba de esta función: sg_load() – Steve

+2

¿Parece que lo que realmente quiere es averiguar si la extensión sourceguardian php está habilitada? –

Respuesta

173

Si va a hacer PHP en la línea de comandos, le recomiendo que instale phpsh, a decent PHP shell. Es mucho más divertido.

De todos modos, el comando php ofrece dos interruptores para ejecutar código desde la línea de comandos:

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

Usted puede utilizar de -r cambiar como tal php:

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

Lo anterior El comando PHP anterior debe salidano y devuelve0 como se puede ver:

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

Otro interruptor curioso es php -a:

-a    Run as interactive shell 

Es especie de cojos en comparación con phpsh, pero si usted no desea instalar the awesome interactive shell for php made by facebook to get tab completion, history, and so on, luego use -a como tal:

>>> php -a 
Interactive shell 

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

Si no funciona en su caja como en mi caja * es * (probado en Ubuntu y Arch), entonces probablemente su configuración PHP es borrosa o roto. Si ejecuta este comando:

php -i | grep 'API' 

Usted debe ver:

Server API => Command Line Interface 

Si no, esto significa que tal vez otro comando se proporciona la CLI SAPI. Pruebe php-cli, tal vez sea un paquete o un comando disponible en su sistema operativo.

Si lo hace ver que su comando php utiliza la CLI (Command Line Interface) SAPI (Server API), a continuación, ejecutar php -h | grep code a averiguar interruptor que loco - ya que esto no ha cambiado para año- permite para ejecutar código en su versión/instalación.

Otro par de ejemplos, sólo para asegurarse de que funciona en mis cajas:

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

Además, tenga en cuenta que es posible que una extensión se carga en la línea de comandos y no en el CGI o Apache SAPI.Es probable que varias SAPI de PHP utilicen diferentes archivos php.ini, p. /etc/php/cli/php.ini vs /etc/php/cgi/php.ini contra /etc/php/apache/php.ini en una caja de Gentoo. Averigüe qué archivo ini se utiliza con php -i | grep ini.

+3

no devuelve nada – Steve

+0

Tal vez su configuración de PHP está rota. Actualicé mi respuesta, incluidos consejos para averiguarlo. – jpic

+0

Agregó una nota sobre php -a que podría ser útil para usted. – jpic

1

En la línea de comandos:

php -i | grep sourceguardian 

Si está ahí, entonces obtendrá un poco de texto. Si no, no obtendrás nada.

+0

O estoy ciego o esta respuesta no tiene nada que ver con la pregunta. ¿Cómo se supone que responde esta pregunta? "¿Cómo ejecutar código PHP directamente desde la línea de comandos, sin guardar el código PHP en el archivo' .php'? _ "? – trejder

+6

@trejder Por un momento me pregunté si había respondido la pregunta incorrecta, pero luego miré el historial de edición y los comentarios. Esto responde a lo que el OP parecía necesitar realmente: averiguar si se había cargado una extensión PHP en particular. La pregunta ha sido reformulada, por lo que ahora no encaja tan bien. –

Cuestiones relacionadas