Soy nuevo en php y quería ejecutar php desde la línea de comandos. He instalado WAMP y configuré las "Variables del sistema" en mi carpeta php (que es C:\wamp\bin\php\php5.4.3
).
Cuando voy a Run
-> CMD
-> Escriba php -a
y presione enter, dice interactive mode enabled
. Pero cuando escribo echo 'Hi';
no muestra nada.
Incluso no veo nada como "php>" cuando escribo php -a
y presiono enter.
Respuestas:
La CLI de PHP como se llama (php para la interfaz de línea de comandos) se llama php.exe Vive en
c:\wamp\bin\php\php5.x.y\php.exe
(donde xey son los números de versión de php que ha instalado)Si desea crear scripts php para que se ejecuten desde la línea de comandos, es muy fácil y muy útil.
Cree usted mismo un archivo por lotes como este, llamémoslo
phppath.cmd
:Cambie
x.y.z
a un nombre de carpeta válido para una versión de PHP que haya instalado dentro de WAMPServerGuárdelo en una de sus carpetas que ya está en su RUTA, para que pueda ejecutarlo desde cualquier lugar.
Ahora, desde una ventana de comandos, ingrese en su carpeta de origen y ejecute> phppath.
Entonces corre
Debería funcionar como un sueño.
Aquí hay un ejemplo que configura PHP Composer y PEAR si es necesario y existen
@echo off REM ************************************************************** REM * PLACE This file in a folder that is already on your PATH REM * Or just put it in your C:\Windows folder as that is on the REM * Search path by default REM * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - REM * EDIT THE NEXT 3 Parameters to fit your installed WAMPServer REM ************************************************************** set baseWamp=D:\wamp set defaultPHPver=7.4.3 set composerInstalled=%baseWamp%\composer set phpFolder=\bin\php\php if %1.==. ( set phpver=%baseWamp%%phpFolder%%defaultPHPver% ) else ( set phpver=%baseWamp%%phpFolder%%1 ) PATH=%PATH%;%phpver% php -v echo --------------------------------------------------------------- REM IF PEAR IS INSTALLED IN THIS VERSION OF PHP IF exist %phpver%\pear ( set PHP_PEAR_SYSCONF_DIR=D:\wamp\bin\php\php%phpver% set PHP_PEAR_INSTALL_DIR=D:\wamp\bin\php\php%phpver%\pear set PHP_PEAR_DOC_DIR=D:\wamp\bin\php\php%phpver%\docs set PHP_PEAR_BIN_DIR=D:\wamp\bin\php\php%phpver% set PHP_PEAR_DATA_DIR=D:\wamp\bin\php\php%phpver%\data set PHP_PEAR_PHP_BIN=D:\wamp\bin\php\php%phpver%\php.exe set PHP_PEAR_TEST_DIR=D:\wamp\bin\php\php%phpver%\tests echo PEAR INCLUDED IN THIS CONFIG echo --------------------------------------------------------------- ) else ( echo PEAR DOES NOT EXIST IN THIS VERSION OF php echo --------------------------------------------------------------- ) REM IF A GLOBAL COMPOSER EXISTS ADD THAT TOO REM ************************************************************** REM * IF A GLOBAL COMPOSER EXISTS ADD THAT TOO REM * REM * This assumes that composer is installed in /wamp/composer REM * REM ************************************************************** IF EXIST %composerInstalled% ( ECHO COMPOSER INCLUDED IN THIS CONFIG echo --------------------------------------------------------------- set COMPOSER_HOME=%baseWamp%\composer set COMPOSER_CACHE_DIR=%baseWamp%\composer PATH=%PATH%;%baseWamp%\composer rem echo TO UPDATE COMPOSER do > composer self-update echo --------------------------------------------------------------- ) else ( echo --------------------------------------------------------------- echo COMPOSER IS NOT INSTALLED echo --------------------------------------------------------------- ) set baseWamp= set defaultPHPver= set composerInstalled= set phpFolder=
Llame a este archivo de comando así para usar la versión predeterminada de PHP
> phppath
O para obtener una versión específica de PHP como esta
> phppath 5.6.30
fuente
PATH=%PATH%
dice crear una nueva variable de entorno PATH con la ruta actual, es decir,%PATH%
más el nuevo directorio que queremos agregar. Windows busca carpetas en la RUTA para encontrar ejecutables, es decir, 'php.exe' que no puede encontrar en el directorio de trabajo actual.Recuerdo una vez cuando me topé con este problema hace unos años, es porque Windows no tiene readline, por lo tanto no tiene shell interactivo, para usar el modo interactivo php sin soporte readline, puede hacer esto en su lugar:
C:\>php -a Interactive mode enabled <?php echo "Hello, world!"; ?> ^Z Hello, world!
Después de ingresar al modo interactivo, escriba usando la etiqueta php de apertura (
<?php
) y cierre (?>
), y termine con el control Z (^Z
) que indica el final del archivo.También recuerdo que encontré la solución en el comentario del usuario del sitio de php: http://www.php.net/manual/en/features.commandline.interactive.php#105729
fuente
readline
habilitado en la compilación de Windows. Hacerlophp -a
lo llevará alInteractive Shell
y permitirá la ejecución de comandos cuando presione enter, no es necesario escribir,<?php
etc., vea este comentario para ver la diferencia: be2.php.net/manual/en/…Intenta usar un archivo por lotes
php -S localhost:8000
.bat
extensión,server.bat
server.bat
archivo en el que su servidor está listohttp://localhost:8000
Dependencia
si tiene un error, php no reconoce ningún comando interno o externo, vaya a la variable de entorno y edite la ruta a php.exe
"C:\wamp\bin\php\php5.4.3"
fuente
El problema que está describiendo parece que a su versión de PHP le puede faltar el módulo PHP readline, lo que hace que el shell interactivo no funcione. Baso esto en esta presentación de error de PHP .
Intenta correr
Y vea si aparece "readline" en la salida.
Puede haber buenas razones para omitir readline de la distribución. PHP normalmente lo ejecuta un servidor web; por lo que no es realmente necesario para la mayoría de los casos de uso. Estoy seguro de que puede ejecutar código PHP en un archivo desde el símbolo del sistema, usando:
php file.php
También está el proyecto phpsh que proporciona un (mejor) shell interactivo para PHP. Sin embargo, algunas personas han tenido problemas para ejecutarlo en Windows (no lo probé yo mismo).
Editar : De acuerdo con la documentación aquí ,
readline
no es compatible con Windows:Entonces, si eso es correcto, sus opciones son:
fuente
readline
para que esto funcione, pero eso podría ser un poco complicado en Windows si no tiene la experiencia necesaria y toda la cadena de herramientas instalada.Si solo desea ejecutar un fragmento de código rápido, puede usar la opción -r:
php -r "echo 'hi';"
-r permite ejecutar código sin usar etiquetas de script
<?..?>
fuente
Puede ejecutar páginas php usando php.exe, cree algún archivo php con código php y en el cmd escriba
"[PATH to php.ext]\php.exe [path_to_file]\file.php"
fuente
ACTUALIZADO Después de algunas investigaciones, la mejor solución fue usar esa información en otro hilo de stackoverflow para evitar la entrada ctrl + z y también de la salida de pantalla. Entonces, en lugar de
php -a
debería usarcall "php.exe" -f NAMED_SCRIPT.php
ANTIGUO Readline no es posible en Windows, por lo que ninguno de los shells php existentes escritos en php funcionará. Pero hay una solución al usar -a modo interactivo.
2 problemas comunes aquí. No puede ver el resultado hasta que ejecute el comando CTRL Z para indicar el final del código / archivo como EOF. Cuando lo hace, el resultado en la mayoría de los casos es un resultado impreso y una ventana cerrada rápidamente. De todos modos, volverá a cmd, no al modo interactivo -a.
Guarde este contenido en un archivo .bat y defina su PATH PHP en las variables de Windows, o modifique php.exe a "ruta completa a exe" en su lugar:
:: :: PHP Shell launch wrapper :: @ECHO off call "php.exe" -a echo. echo. call "PHP Shell.bat"
Este es un modo simple de ejecución por lotes -a de php.exe. Cuando se inicia php, se detiene el script aunque no se escriba una pausa porque está "en" el interactivo esperando entrada. Cuando presiona CTRL Z, obtiene el SIGSTEP (siguiente paso) no el SIGSTOP (cerrar, CTRL + C generalmente), luego lee la siguiente instrucción, que es una llamada recursiva a .bat. Porque siempre está en modo PHP -a, sin comando de salida. Debe usar CTRL + C o presionar la cruz de salida con el mouse. (Sin alt + f4)
También puede utilizar el convertidor "Bat to Exe" para facilitar su uso.
fuente
simplemente siga estos pasos si no necesita su versión anterior de php:
esto funciona bien
fuente
Eso es porque estás en 'Modo Interactivo' donde php evalúa todo lo que escribes. Para ver el resultado final, haz 'ctrl + z' y Enter. Debería ver el resultado evaluado ahora :)
ps ejecuta el cmd como administrador!
fuente
La siguiente solución es específicamente para entornos wamp:
Esto me confundió por un tiempo, probé todas las otras sugerencias, $ PATH, etc.incluso busqué en el registro de Windows en busca de pistas:
La GUI (wampmanager) indica que he seleccionado la versión 7 y sí, si phpinfo () en una página del navegador me dirá su versión 7.xx, pero php -v en el símbolo del sistema informa un 5.xx
Si hace clic derecho en la cabeza de wampmanager para icono-> herramientas-> eliminar versiones no utilizadas y eliminar la versión anterior, deje que reinicie los servicios y luego el símbolo del sistema devolverá un 7.xx
Esta solución significa que ya no tiene la versión anterior si desea cambiar entre versiones de php, pero hay un archivo de configuración en C: \ wamp64 \ wampmanager.conf que parece especificar la versión para usar con CLI (el parámetro se llama phpCliVersion) . Lo cambié, reinicié el servidor ... pensé que lo había resuelto, pero sin efecto, tal vez estaba un poco impaciente, así que tengo la sensación de que puede haber algo de kilometraje en eso.
Espero que ayude a alguien
fuente
En Windows, coloque su archivo php.exe en windows / system32 o en cualquier otra carpeta ejecutable del sistema y luego vaya a la línea de comando y escriba php y presione enter a continuación, si no genera ningún error, entonces está listo para usar PHP en la línea de comando . Si ha configurado su php.exe en otro lugar que no sea las carpetas del sistema predeterminadas, entonces debe establecer la ruta en las variables de entorno. Puedes llegar por el siguiente camino ....
panel de control -> Sistema -> Edith las variables de entorno de su cuenta -> Environment Vaiables -> ruta -> editar, luego configure la ruta absoluta de su php.exe allí y siga el mismo procedimiento que en el primer párrafo, si no hay nada en el error departamento, entonces está listo para usar php desde la línea de comando.
fuente