Para ejecutar un archivo PHP, abre una terminal en su carpeta y escribe php index.php. PHP ejecuta el archivo e imprime su salida en la terminal. Para ver una página PHP en un navegador, arranca el servidor integrado con php -S localhost:8000 y abre http://localhost:8000.
php index.php
Un primer index.php puede tener una sola línea. Pulsa Ejecutar: esto es exactamente lo que imprime php index.php.
El código PHP va después de la etiqueta <?php. Todo lo que haya antes de esa etiqueta se imprime como texto plano, que es como PHP mezcla código con HTML.
Ejecutar un archivo PHP desde la línea de comandos
La CLI de PHP (interfaz de línea de comandos) ejecuta un script una vez y termina. Necesitas tener PHP instalado; si php -v imprime un error, consulta primero instalar PHP.
cd ~/projects/hello
php index.php # run the file
php -l index.php # only check the syntax ("lint")
php index.php > out.txt # save the output to a file
php -l es útil antes de subir un archivo: informa de un error de sintaxis con su número de línea, o imprime No syntax errors detected in index.php.
Pasar argumentos con $argv
Las palabras que van después del nombre del archivo llegan en $argv. $argv[0] es siempre el nombre del propio script y $argc es la cantidad, contando ese nombre. Aquí el bloque se ejecuta sin argumentos extra, así que solo está el nombre:
En tu propio equipo, php index.php Ada 3 imprime el saludo tres veces. Los valores por defecto con ?? hacen que el script funcione aunque falte un argumento. Para opciones con nombre como --name=Ada, usa getopt:
<?php
// php index.php --name=Ada --verbose
$opts = getopt('', ['name:', 'verbose']);
echo "Hello, " . ($opts['name'] ?? 'world') . "\n";
if (isset($opts['verbose'])) {
echo "Verbose mode\n";
}
Ejecutar PHP en el navegador con php -S
PHP trae un servidor web de desarrollo integrado. Arráncalo en la carpeta de tus archivos:
php -S localhost:8000
[Sat Oct 3 07:21:34 2026] PHP 8.3.19 Development Server (http://localhost:8000) started
Ahora http://localhost:8000/ ejecuta index.php, y http://localhost:8000/about.php ejecuta about.php. Cada carga de página vuelve a ejecutar el archivo, con la query string en $_GET. El bloque de abajo se comporta igual: ejecútalo, haz clic en un enlace y el script se ejecuta de nuevo con $_GET['page'] definido.
Opciones útiles:
php -S localhost:8000 -t public # serve the public/ folder as the web root
php -S 0.0.0.0:8000 # reachable from other devices on your network
php -S localhost:8000 router.php # send every request through router.php
El servidor integrado atiende una petición cada vez y está pensado solo para desarrollo. En producción, PHP se ejecuta detrás de Nginx o Apache, normalmente mediante PHP-FPM.
Comprobar cómo se arrancó el script
PHP_SAPI te dice qué "server API" ejecuta el script: cli en una terminal, cli-server con php -S, y fpm-fcgi o apache2handler detrás de un servidor web real. Los scripts que solo deben ejecutarse desde una terminal lo comprueban primero:
Ejecutar una sola línea con php -r
Para una prueba rápida no necesitas un archivo. php -r ejecuta el código que le pasas, sin la etiqueta <?php:
php -r 'echo date("Y-m-d"), PHP_EOL;'
php -r 'var_dump(0.1 + 0.2 == 0.3);'
En el cmd de Windows, envuelve el código entre comillas dobles y usa comillas simples dentro. Para varias líneas, php -a abre una shell interactiva donde cada sentencia se ejecuta al pulsar Enter.
Hacer un script ejecutable en macOS y Linux
Añade una línea shebang antes de <?php y marca el archivo como ejecutable. La línea shebang no se imprime:
#!/usr/bin/env php
<?php
echo "Backup started\n";
chmod +x backup.php
./backup.php
Así se ejecutan los scripts PHP desde cron: 0 3 * * * /usr/bin/php /home/me/backup.php.
Códigos de salida de los scripts
Un script de línea de comandos informa del éxito o del fallo mediante su código de salida, que los scripts de shell y cron pueden comprobar. exit(0) significa éxito; cualquier otro número, fallo:
<?php
$file = $argv[1] ?? '';
if (!is_file($file)) {
fwrite(STDERR, "File not found: $file\n");
exit(1);
}
echo "Processing $file\n";
exit(0);
Error frecuente: ejecutar el archivo o la carpeta equivocados
Could not open input file: index.php significa que PHP no encuentra el archivo desde donde está la terminal. Comprueba la carpeta actual con pwd (o cd en Windows) y entra en el proyecto con cd o indica la ruta completa: php ~/projects/hello/index.php. Con php -S, un 404 en una página que sabes que existe suele significar que el servidor se arrancó en otra carpeta; detenlo con Ctrl+C y arráncalo de nuevo en el lugar correcto, o indica la carpeta con -t. Si el archivo se ejecuta pero imprime una página en blanco, activa el reporte de errores para ver qué falló.
Preguntas frecuentes
¿Cómo ejecuto un archivo PHP en el navegador?
Arranca el servidor integrado en la carpeta que contiene el archivo con php -S localhost:8000 y abre http://localhost:8000/yourfile.php. Abrir el archivo directamente desde el disco no funciona, porque nada ejecuta el código PHP.
¿Cómo paso argumentos a un script PHP?
Escríbelos después del nombre del archivo: php report.php 2026 sales. Dentro del script, $argv es el array ['report.php', '2026', 'sales'] y $argc vale 3. El primer elemento es siempre el nombre del script.
¿Cómo ejecuto una línea de PHP sin archivo?
Usa php -r y omite la etiqueta <?php: php -r 'echo strtoupper("hi"), PHP_EOL;'. Para varias líneas, php -a abre una shell interactiva.
¿Cómo sé si PHP se ejecuta desde la línea de comandos o desde un servidor web?
Comprueba PHP_SAPI (o php_sapi_name()). Vale "cli" en una terminal, "cli-server" con php -S y algo como "fpm-fcgi" o "apache2handler" detrás de un servidor web.