Me gustaría ejecutar una sola declaración php como if(function_exists("my_func")) echo 'function exists';directamente con la línea de comando sin tener que usar un archivo php separado.
Como es posible ?
Me gustaría ejecutar una sola declaración php como if(function_exists("my_func")) echo 'function exists';directamente con la línea de comando sin tener que usar un archivo php separado.
Como es posible ?
Respuestas:
Si vas a hacer PHP en la línea de comando, te recomiendo que instales phpsh, un shell PHP decente . Es mucho mas divertido.
De todos modos, el comando php ofrece dos interruptores para ejecutar código desde la línea de comando :
-r <code> Run PHP <code> without using script tags <?..?>
-R <code> Run PHP <code> for every input line
Puede usar el modificador phr 's como tal:
php -r 'echo function_exists("foo") ? "yes" : "no";'
El comando PHP anterior anterior debería generar no y devuelve 0 como puede ver:
>>> php -r 'echo function_exists("foo") ? "yes" : "no";'
no
>>> echo $? # print the return value of the previous command
0
Otro cambio divertido es php -a :
-a Run as interactive shell
Es un poco aburrido en comparación con phpsh , pero si no desea instalar el increíble shell interactivo para php hecho por Facebook para completar la pestaña, el historial, etc. , 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 de PHP es difusa o rota . Si ejecuta este comando:
php -i | grep 'API'
Usted debe ver:
Server API => Command Line Interface
Si no lo hace , esto significa que tal vez otro comando proporcionará la CLI SAPI . Pruebe php-cli, tal vez sea un paquete o un comando disponible en su sistema operativo.
Si ve que su comando php usa la CLI (Interfaz de línea de comando) SAPI (API del servidor), ejecute php -h | grep codepara averiguar qué interruptor loco, ya que esto no ha cambiado durante un año, permite ejecutar el código en su versión / configuración.
Otro par de ejemplos, solo para asegurarme 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 se cargue una extensión en la CLI y no en la CGI o Apache SAPI. Es probable que varios SAPI de PHP utilicen diferentes archivos php.ini , por ejemplo, /etc/php/cli/php.inivs /etc/php/cgi/php.inivs /etc/php/apache/php.inien un cuadro de Gentoo. Averigüe con qué archivo ini se usa php -i | grep ini.
En la línea de comando:
php -i | grep sourceguardian
Si está allí, obtendrás algo de texto. Si no, no obtendrás nada.
.phparchivo? "
Puedes usar :
echo '<?php if(function_exists("my_func")) echo "function exists"; ' | php
La etiqueta corta " <? = " También puede ser útil:
echo '<?= function_exists("foo") ? "yes" : "no";' | php
echo '<?= 8+7+9 ;' | php
La etiqueta de cierre "?>" Es opcional, pero no olvide el final ";" !
php -rusarlo, no necesita preocuparse por abrir etiquetas PHP.
Usando PHP desde la línea de comando
use "en lugar de ' en Windows cuando use la versión cli con -r
php -r "echo 1"
- correcto
php -r 'echo 1'
- incorrecto
PHP Parse error: syntax error, unexpected ''echo' (T_ENCAPSED_AND_WHITESPACE), expecting end of file in Command line code on line 1