Cómo ejecutar PHP desde la línea de comandos de Windows en WAMPServer
Soy nuevo en PHP y quería ejecutar PHP desde la línea de comandos. Instalé 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
-> Escribir php -a
y presiono enter, dice interactive mode enabled
. Pero cuando escribo echo 'Hi';
no muestra nada.
Ni siquiera veo nada como 'php >" cuando escribo php -a
y presiono enter.
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 ejecutar desde la línea de comandos, entonces es genial, es fácil y muy útil.
Cree usted mismo un archivo por lotes como este, llamémoslo phppath.cmd
:
PATH=%PATH%;c:\wamp\bin\php\phpx.y.z
php -v
Cambie x.y.z
a un nombre de carpeta válido para una versión de PHP que haya instalado en WAMPServer
Guarde esto en una de sus carpetas que ya esté en su RUTA, para que pueda ejecutarlo desde cualquier lugar.
Ahora, desde una ventana de comandos, acceda a su carpeta de origen y ejecute >phppath.
Entonces corre
php tu_script.php
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=%baseWamp%%phpFolder%%phpver%
set PHP_PEAR_INSTALL_DIR=%baseWamp%%phpFolder%%phpver%\pear
set PHP_PEAR_DOC_DIR=%baseWamp%%phpFolder%%phpver%\docs
set PHP_PEAR_BIN_DIR=%baseWamp%%phpFolder%%phpver%
set PHP_PEAR_DATA_DIR=%baseWamp%%phpFolder%%phpver%\data
set PHP_PEAR_PHP_BIN=%baseWamp%%phpFolder%%phpver%\php.exe
set PHP_PEAR_TEST_DIR=%baseWamp%%phpFolder%%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=
set phpver=
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
Recuerdo una vez que me encontré con este problema hace unos años, es porque Windows no tiene readline, por lo tanto, no tiene un shell interactivo. Para usar el modo interactivo de PHP sin soporte de readline, puedes 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 finalice 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 php: http://www.php.net/manual/en/features.commandline.interactive.php#105729
Intente usar un archivo por lotes
- Abrir bloc de notas
- tipo
php -S localhost:8000
- guardar el archivo como
.bat
extensión,server.bat
- ahora haga clic en
server.bat
el archivo en el que su servidor está listohttp://localhost:8000
Dependencia
Si obtiene el 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"
El problema que estás describiendo parece que a tu versión de PHP le puede faltar el módulo PHP readline, lo que hace que el shell interactivo no funcione. Me baso en este envío de error de PHP .
Intenta correr
php -m
Y vea si aparece "readline" en el resultado.
Puede haber buenas razones para omitir readline de la distribución. PHP normalmente lo ejecuta un servidor web; por lo que realmente no es necesario para la mayoría de los casos de uso. Estoy seguro de que puedes ejecutar código PHP en un archivo desde el símbolo del sistema, usando:
php file.php
También existe el proyecto phpsh que proporciona un (mejor) shell interactivo para PHP. Sin embargo, algunas personas han tenido problemas para ejecutarlo en Windows (yo no lo intenté).
Editar : según la documentación aquí , readline
no es compatible con Windows:
Nota: esta extensión no está disponible en plataformas Windows.
Entonces, si eso es correcto, tus opciones son:
- Evite el shell interactivo y simplemente ejecute código PHP en archivos desde la línea de comandos; esto debería funcionar bien
- Intente hacer que phpsh funcione en Windows
Si simplemente 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 utilizar etiquetas de script<?..?>