Con HTML, el servidor entrega el archivo tal como está escrito: si diez personas abren index.html, las diez reciben exactamente lo mismo. Eso no alcanza para un sitio que tiene que mostrar el saludo según la hora, los productos de una lista o el mensaje de “datos recibidos” después de un formulario. Para eso existe PHP.

Un programa que escribe HTML

PHP es un lenguaje de programación que se ejecuta en el servidor. Su trabajo casi siempre es el mismo: hacer cálculos y decisiones, y escribir el HTML que se le va a enviar al navegador.

Qué pasa cuando alguien abre un .php

%%{init: {'sequence': {'width': 210, 'noteMargin': 14, 'messageAlign': 'center'}}}%%
sequenceDiagram
    participant N as Navegador
    participant S as Servidor
    participant P as PHP
    N->>S: GET /index.php
    S->>P: Ejecuta index.php
    Note over P: Corre el código:<br/>calcula, decide<br/>y escribe HTML
    P-->>S: HTML resultante
    S-->>N: Respuesta con solo HTML
    Note over N: Dibuja la página.<br/>Nunca ve el PHP
  1. El navegador pide index.php, igual que antes pedía index.html.
  2. El servidor ve la extensión .php y, en vez de enviar el archivo, se lo pasa a PHP.
  3. PHP ejecuta el código de arriba hacia abajo. Todo lo que el código imprime se va juntando como texto.
  4. El servidor envía ese texto (el HTML resultante) al navegador.
  5. El navegador dibuja la página. Para él es HTML normal: no sabe que hubo PHP.

Por eso el usuario nunca ve tu código PHP

Si abres F12 o Ver código fuente en una página hecha con PHP, solo verás HTML. El código quedó en el servidor. Esto es lo que permite que más adelante una contraseña de base de datos viva en un .php sin que nadie la vea.

Frontend y backend, otra vez

HTML, CSS y TailwindPHP
Dónde se ejecutaEn el navegador del usuarioEn el servidor
Quién lo veCualquiera, con F12Nadie: solo se ve lo que imprime
Qué haceMuestra y da estiloCalcula, decide y genera el HTML
Cuándo cambiaCuando editas el archivoEn cada solicitud: cada visita puede ser distinta

El intérprete

En C escribías el código, lo compilabas con gcc y ejecutabas el programa resultante. PHP no se compila: un programa llamado intérprete (el comando php) lee tu archivo y lo ejecuta en el momento, línea por línea.

Compilar frente a interpretar

flowchart LR
    subgraph C["En C"]
        A1["programa.c"] -->|"gcc"| B1["programa<br/>(ejecutable)"] --> C1["Salida"]
    end
    subgraph PHP["En PHP"]
        A2["programa.php"] -->|"php lo lee y<br/>lo ejecuta"| C2["Salida"]
    end

Consecuencia práctica: guardas y recargas. No hay paso de compilación. Si hay un error, aparece recién cuando PHP llega a ejecutar ese archivo.

Dos formas de ejecutar un archivo PHP

1. En la terminal

Para probar el lenguaje, sin navegador. Crea hola.php:

<?php
echo "Hola desde PHP\n";
echo "Esto lo imprimió la terminal\n";

Y ejecútalo desde la carpeta donde está:

php hola.php
Hola desde PHP
Esto lo imprimió la terminal

La mayoría de los ejemplos de las partes 2 a 4 se prueban así: es más rápido y la salida se lee limpia.

2. En el navegador, con el servidor de PHP

Para el sitio. Desde la carpeta del proyecto:

php -S localhost:8000
[Mon Oct 19 19:30:00 2026] PHP 8.3.6 Development Server (http://localhost:8000) started

Abre http://localhost:8000/hola.php en el navegador. La terminal queda ocupada mostrando cada solicitud que llega; para detener el servidor, Ctrl + C.

php archivo.phpphp -S localhost:8000
Para quéProbar el lenguajeVer el sitio en el navegador
La salida aparece enLa terminalEl navegador
TerminaAl llegar al final del archivoCuando presionas Ctrl + C
\n produceUn salto de líneaUn espacio (el navegador lee HTML)

Incorrecto: abrir el .php con Live Server o con doble clic

Live Server y el doble clic entregan el archivo tal cual, sin pasárselo a PHP. Verás el código fuente en pantalla, o el navegador te ofrecerá descargarlo.

<?php echo "Hola desde PHP"; ?>

Correcto: levantar php -S en la carpeta del proyecto

cd ~/mi-sitio
php -S localhost:8000

Y en el navegador, http://localhost:8000. Si no escribes el nombre de un archivo, el servidor busca index.php (o index.html) en esa carpeta.

La carpeta desde donde lo levantas es la raíz del sitio

php -S sirve los archivos de la carpeta en la que estás parado en la terminal. Si lo levantas en tu carpeta personal, localhost:8000/index.php buscará ~/index.php y responderá 404. Revisa con pwd antes de levantarlo.

Pruébalo

  • Crea hola.php y ejecútalo con php hola.php
  • Levanta php -S localhost:8000 en la misma carpeta y abre localhost:8000/hola.php
  • Mira el código fuente de la página en el navegador (Ctrl + U): no aparece <?php
  • Error provocado: abre hola.php con Live Server y mira qué muestra
  • Error provocado: levanta el servidor en otra carpeta y lee el 404 en la terminal

Errores comunes

SíntomaCausaSolución
Se ve el código <?php … en el navegadorAbriste el archivo con Live Server o con doble clicÁbrelo desde http://localhost:8000 con php -S levantado
Command 'php' not foundPHP no está instalado o no estás en WSLInstalación de PHP
Failed to listen on localhost:8000 (reason: Address already in use)Ya hay un servidor corriendo en ese puerto, en otra terminalCiérralo con Ctrl + C o usa otro puerto: php -S localhost:8001
404 Not Found en el navegadorLevantaste el servidor en otra carpeta, o el nombre del archivo no coincideRevisa con pwd y ls; recuerda que Linux distingue mayúsculas

Checkpoint

Intenta responder antes de desplegar cada pregunta.