Saltar al contenido
primeros pasos / · 5 min

Instalar Laravel desde cero en Windows con Laragon

El entorno en el que trabajo todos los días, montado paso a paso: PHP 8.3, Composer, Laragon con dominios .test automáticos y PostgreSQL. Incluye los tres errores con los que todo el mundo se topa.

Administrador · Desarrollador Laravel
Instalar Laravel desde cero en Windows con Laragon

Todos mis proyectos viven en C:\laragon\www. Llevo años trabajando en Windows con Laragon y, cada vez que alguien del equipo entra nuevo, repito estos mismos pasos. Los dejo escritos.

Esto no es «la mejor manera» de correr Laravel —en producción todo esto va sobre Linux con Docker—, es la manera en que un entorno local en Windows deja de estorbar.

Por qué Laragon y no XAMPP ni WSL

Frente a XAMPP: Laragon crea un dominio .test para cada carpeta que pongas en www, con su virtual host y su certificado, sin que toques un archivo de configuración. Creas C:\laragon\www\mi-tienda y http://mi-tienda.test funciona. Con XAMPP eso son tres archivos editados a mano cada vez.

Frente a WSL2: WSL es más parecido a producción y es lo correcto para proyectos con Docker. Pero el acceso a archivos entre Windows y WSL es lento, y si tu editor está en Windows lo vas a notar en cada guardado. Para trabajar el día entero sobre PHP, Laragon en nativo es más ágil.

1. Laragon

Se descarga la edición Full de laragon.org. Trae Apache, MySQL, PHP, Composer, Node y Git empaquetados.

Instálalo en C:\laragon. No lo pongas en Program Files: esa ruta tiene espacio y permisos restringidos, y las dos cosas rompen herramientas de línea de comandos en el momento menos oportuno.

Al abrirlo verás cuatro botones. El que importa es Iniciar todo, que levanta Apache y la base de datos.

2. Poner la versión de PHP correcta

La que trae puede no ser la que necesitas. Laravel 13 pide PHP 8.3 o superior; Laravel 12, PHP 8.2.

Laragon permite tener varias y cambiar entre ellas. Se descarga la que falte de windows.php.net —la versión Thread Safe, que es la que funciona con Apache— y se descomprime en:

C:\laragon\bin\php\php-8.3.24-Win32-vs16-x64\

Después, clic derecho en Laragon → PHPVersion → la nueva.

Comprobación:

php -v

Si dice 8.3 o más, listo. Si el comando no existe, Laragon no está agregando su carpeta al PATH: abre la terminal desde el botón Terminal del propio Laragon en vez de usar una consola cualquiera.

Las extensiones

Laravel necesita varias. La mayoría vienen activadas, pero estas tres se olvidan seguido:

; C:\laragon\bin\php\php-8.3.xx\php.ini
extension=fileinfo
extension=zip
extension=pdo_pgsql     ; si vas a usar PostgreSQL
extension=intl          ; para formato de fechas y números en español

Se descomentan quitando el ;, y se reinicia Apache desde Laragon.

3. Composer

Laragon lo trae. Verifica:

composer -V

Si no está, se instala desde getcomposer.org con el instalador de Windows, que detecta el PHP del PATH.

4. Crear el proyecto

Desde la terminal de Laragon, parado en C:\laragon\www:

composer create-project laravel/laravel mi-proyecto

O con el instalador oficial, que además pregunta por el kit de arranque:

composer global require laravel/installer
laravel new mi-proyecto

Tarda un par de minutos. Cuando termine:

cd mi-proyecto

Y ya puedes abrir http://mi-proyecto.test en el navegador. Sin configurar nada: Laragon detectó la carpeta nueva y apuntó el dominio a public/.

Si no carga, clic derecho en Laragon → ApacheReload.

5. La base de datos

Laragon trae MySQL. Yo uso PostgreSQL en todo, así que lo instalo aparte desde postgresql.org y lo dejo en el puerto 5432.

La base se crea desde la terminal:

createdb -U postgres mi_proyecto

Y en el .env del proyecto:

DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=mi_proyecto
DB_USERNAME=postgres
DB_PASSWORD=tu_contraseña

Para MySQL con Laragon, la contraseña de root viene vacía:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=mi_proyecto
DB_USERNAME=root
DB_PASSWORD=

Y se levantan las tablas:

php artisan migrate

6. El frontend

Laragon trae Node. Verifica con node -v que sea 20 o superior.

npm install
npm run dev

npm run dev levanta Vite y se queda corriendo. No lo cierres mientras trabajas: es lo que recompila el CSS y el JavaScript al guardar. Necesitas dos terminales abiertas, una para Vite y otra para los comandos de Artisan.

Los tres errores con los que todo el mundo se topa

«The stream or file could not be opened»

Permisos de escritura en storage/ y bootstrap/cache. En Windows suele pasar cuando el proyecto se creó con una cuenta y Apache corre con otra. Se arregla dando control total al usuario sobre la carpeta del proyecto, desde Propiedades → Seguridad.

La página carga sin estilos

Vite no está corriendo, o el APP_URL no coincide con el dominio por el que entras. Revisa que el .env diga:

APP_URL=http://mi-proyecto.test

Y después:

php artisan config:clear

Este es, con diferencia, el que más veces he tenido que explicar.

«could not find driver»

La extensión de PDO de tu base no está activada. Es el pdo_pgsql o el pdo_mysql del paso 2. Después de descomentarlo hay que reiniciar Apache, no basta con guardar el php.ini.

Para confirmar qué PHP está usando la web —que puede no ser el de tu terminal—, crea un archivo temporal en public/:

<?php phpinfo();

Ábrelo, busca «Loaded Configuration File» y verás exactamente qué php.ini está leyendo Apache. Bórralo en cuanto termines: phpinfo() publica la configuración entera de tu servidor.

Lo que hago siempre después de crear el proyecto

Tres cosas, antes de escribir la primera línea:

# Formato de código consistente desde el commit uno
./vendor/bin/pint

# Análisis estático
composer require --dev larastan/larastan
./vendor/bin/phpstan analyse

# Que las pruebas corran
php artisan test

Configurar esto cuando el proyecto tiene tres archivos toma cinco minutos. Configurarlo cuando tiene doscientos es una tarde entera arreglando avisos.

#php #laravel #windows #laragon #composer
Comentarios 0

Nadie ha comentado todavía. Estrena la sección.

Deja tu comentario
Tu correo no se publica. Reviso los comentarios antes de publicarlos.