Cargando…

Esto está tardando más de lo esperado.

Volver al centro de ayuda

El archivo de entorno

Cada variable que se lee de .env, su valor por omisión y cuáles poner antes del primer arranque.

Todo lo que cambia entre máquinas vive en .env. Lo que pertenece al producto en sí es un valor committeado en config/. Esta guía recorre el archivo completo, grupo por grupo, para que veas en un solo lugar qué lee la aplicación. Las variables que pertenecen a una función también se nombran aquí, con un enlace a la guía que explica la función.

Pon estas antes del primer arranque

.env.example es una copia de la configuración de un servidor, con valores de relleno donde van los secretos. Antes de la primera petición, decide estas:

Variable Por qué no puede esperar
APP_KEY php artisan key:generate la escribe; sin ella nada se cifra
APP_NAME nombra el sitio, los correos, la PWA y la cookie de sesión
APP_URL de ahí salen todo enlace absoluto, el alcance de la PWA y el dominio de saludo SMTP
DB_CONNECTION, DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD la migración las necesita
FILESYSTEM_DISK viene como s3 con llaves de AWS falsas; pon public hasta que tengas un bucket
MAIL_MAILER viene como failover, que necesita credenciales de Mailgun o SES; pon log en local
MAIL_FROM_ADDRESS el remitente de cada correo; el valor de ejemplo no es tuyo
SESSION_DRIVER déjalo en database: la lista de dispositivos de la cuenta lee la tabla sessions

Todo lo demás tiene un valor por omisión que deja arrancar la aplicación. Los valores de relleno que .env.example deja en AWS_*, TELNYX_*, STRIPE_* y AUTH_VALIDATION_PROVIDER no hacen daño hasta que enciendes la función que los lee; bórralos o reemplázalos cuando llegues ahí.

Los valores con espacios necesitan comillas: APP_NAME="Tu Proyecto". Una variable presente pero vacía se lee como cadena vacía, no como ausente, así que quita la línea en vez de dejarla en blanco cuando quieras recuperar el valor por omisión.

Aplicación

Las lee config/app.php.

Variable Valor por omisión Para qué
APP_NAME Laravel Se muestra en la interfaz, los correos y el manifest; también siembra los prefijos por omisión de cookie, caché y Redis
APP_ENV production local en tu máquina. php artisan env imprime lo que la aplicación cree
APP_KEY ninguno Llave de cifrado, escrita por key:generate
APP_PREVIOUS_KEYS vacío Llaves anteriores separadas por coma, para que lo cifrado con ellas siga descifrándose tras una rotación
APP_DEBUG false Páginas de error detalladas y la Debugbar. Nunca true en producción; también relaja la cookie de sesión, ve abajo
APP_URL http://localhost URL raíz para enlaces construidos fuera de una petición, la URL del disco public, el alcance de la PWA y VAPID_SUBJECT
ASSET_URL ninguno Servir los assets compilados desde otro host o CDN
APP_LOCALE es Idioma antes de que alguien elija uno; también el lang del manifest de la PWA. Debe ser una llave de languages en config/app.php. El idioma de respaldo está committeado como es
APP_MAINTENANCE_DRIVER file file o cache; cache deja que varios servidores compartan el modo de mantenimiento
APP_MAINTENANCE_STORE database Almacén de caché usado cuando el driver es cache
APP_PWA false Enciende el service worker y el manifest. Ve Web push y la PWA
COUNTRY_CODE_FALLBACK US País asumido cuando la IP no se puede resolver, como en 127.0.0.1. Ve Detecta el país del visitante

Base de datos

Las lee config/database.php. DB_CONNECTION elige una de sqlite, mysql, mariadb, pgsql o sqlsrv; las demás variables las comparten todas. Las tablas failed_jobs y job_batches de la cola usan la misma conexión.

Variable Valor por omisión Para qué
DB_CONNECTION mysql Qué bloque de conexión es el predeterminado
DB_URL ninguno Una sola URL de conexión que reemplaza host, puerto, base de datos, usuario y contraseña
DB_HOST 127.0.0.1 (localhost para SQL Server) Dirección del servidor
DB_PORT 3306 MySQL y MariaDB, 5432 PostgreSQL, 1433 SQL Server Puerto del servidor
DB_DATABASE laravel; para SQLite database/database.sqlite Nombre de la base de datos, o la ruta del archivo SQLite
DB_USERNAME root Usuario de la base de datos
DB_PASSWORD vacío Contraseña de la base de datos
DB_SOCKET vacío Socket Unix para MySQL y MariaDB en lugar de host y puerto
DB_CHARSET utf8mb4 MySQL y MariaDB, utf8 los demás Charset de la conexión
DB_COLLATION utf8mb4_unicode_ci Collation para MySQL y MariaDB
DB_FOREIGN_KEYS true Exigir llaves foráneas en SQLite
MYSQL_ATTR_SSL_CA ninguno Ruta a un certificado CA para TLS hacia MySQL o MariaDB
DB_ENCRYPT, DB_TRUST_SERVER_CERTIFICATE ninguno Listadas en el bloque de SQL Server pero comentadas; nada las lee hasta que descomentes esas líneas

Correo

Las lee config/mail.php, con las credenciales de proveedor en config/services.php. El kit manda códigos de verificación, restablecimientos de contraseña, notificaciones y correos de cobro, así que un mailer que funcione no es opcional una vez que se registra gente real. Cómo se configura cada transporte de punta a punta, SMS incluido, está en Entrega de correo y SMS.

MAIL_MAILER elige el transporte. Los mailers definidos son smtp, ses, mailgun, postmark, resend, sendmail, log, array, failover y roundrobin. Los dos compuestos están committeados en config/mail.php:

  • failover intenta mailgun, luego ses, y espera 60 segundos antes de reintentar un transporte que falló. Es el valor que trae .env.example.
  • roundrobin alterna entre ses y postmark.

Los correos de verificación tienen una red de seguridad más: después de que el mailer predeterminado falla, el código se manda otra vez por cada mailer de mail_fallbacks en config/auth.php, que viene como ['mailgun'].

Variable Valor por omisión Para qué
MAIL_MAILER smtp en config, failover en .env.example Transporte a usar
MAIL_FROM_ADDRESS [email protected] Dirección remitente de cada correo
MAIL_FROM_NAME APP_NAME Nombre del remitente
MAIL_SCHEME ninguno smtp o smtps para el transporte SMTP
MAIL_URL ninguno Una sola URL SMTP que reemplaza host, puerto, usuario y contraseña
MAIL_HOST 127.0.0.1 Servidor SMTP
MAIL_PORT 2525 Puerto SMTP
MAIL_USERNAME ninguno Usuario SMTP
MAIL_PASSWORD ninguno Contraseña SMTP
MAIL_EHLO_DOMAIN el host de APP_URL Dominio anunciado en el EHLO de SMTP
MAIL_SENDMAIL_PATH /usr/sbin/sendmail -bs -i Binario para el transporte sendmail
MAIL_LOG_CHANNEL ninguno Canal de log al que escribe el transporte log; el canal predeterminado cuando está vacío
MAILGUN_DOMAIN mg.weblabor.mx Tu dominio de envío de Mailgun. Cámbialo: el valor por omisión es el de Weblabor
MAILGUN_SECRET ninguno Llave de API de Mailgun
MAILGUN_ENDPOINT api.mailgun.net api.eu.mailgun.net para la región de la UE
POSTMARK_TOKEN ninguno Token de servidor de Postmark
POSTMARK_MESSAGE_STREAM_ID ninguno Flujo de mensajes de Postmark
RESEND_KEY ninguno Llave de API de Resend

Amazon SES lee AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY y AWS_DEFAULT_REGION del grupo de archivos de abajo; la región cae a us-east-1 para SES cuando la variable falta.

Archivos y almacenamiento

Las lee config/filesystems.php. Existen tres discos: local en storage/app/private, public en storage/app/public servido en APP_URL/storage a través del enlace que crea php artisan storage:link, y s3. Las subidas y el manejo de imágenes están en Archivos, imágenes y almacenamiento.

Variable Valor por omisión Para qué
FILESYSTEM_DISK s3 Disco usado cuando no se nombra ninguno. Pon public para archivos que la gente puede ver, local para los que no
AWS_ACCESS_KEY_ID ninguno Llave de AWS. La comparten S3, SES, SQS, DynamoDB, Bedrock y los códigos telefónicos por SNS
AWS_SECRET_ACCESS_KEY ninguno Secreto de AWS, compartido igual
AWS_DEFAULT_REGION ninguno para S3 Región del bucket. SES, SQS y DynamoDB caen a us-east-1; los códigos telefónicos por SNS caen a us-west-1
AWS_BUCKET ninguno Nombre del bucket
AWS_URL ninguno URL pública del bucket cuando no es la de AWS, como un CDN delante de él
AWS_ENDPOINT ninguno Endpoint propio para un servicio compatible con S3 como MinIO o DigitalOcean Spaces
AWS_USE_PATH_STYLE_ENDPOINT false true para servicios que ponen el bucket en la ruta en vez del host
LIVEWIRE_TEMPORARY_FILE_UPLOAD_DISK el disco predeterminado Dónde estaciona Livewire un archivo mientras un formulario sigue abierto

Colas

Las lee config/queue.php. Las notificaciones, el web push y los cobros corren todos por la cola, así que un worker tiene que estar corriendo en cada entorno; ve Colas y trabajo programado. El driver database no necesita ningún servicio extra.

Variable Valor por omisión Para qué
QUEUE_CONNECTION database sync, database, beanstalkd, sqs, redis o null. sync corre los jobs en línea, útil sólo en pruebas
QUEUE_FAILED_DRIVER database-uuids Dónde se guardan los jobs fallidos: database-uuids, dynamodb, file o null
DB_QUEUE_CONNECTION la conexión predeterminada Conexión de base de datos para el driver database
DB_QUEUE_TABLE jobs Tabla para el driver database
DB_QUEUE default Nombre de la cola para el driver database
DB_QUEUE_RETRY_AFTER 10 Segundos antes de reintentar un job que sigue corriendo. Súbelo por encima de tu job más largo
BEANSTALKD_QUEUE_HOST localhost Servidor de Beanstalkd
BEANSTALKD_QUEUE default Tube de Beanstalkd
BEANSTALKD_QUEUE_RETRY_AFTER 90 Segundos de reintento para Beanstalkd
SQS_PREFIX una URL de relleno de AWS El prefijo de URL de tu cola SQS, https://sqs.<región>.amazonaws.com/<id de cuenta>
SQS_QUEUE default Nombre de la cola SQS
SQS_SUFFIX ninguno Sufijo añadido al nombre de la cola, usado con colas FIFO
REDIS_QUEUE_CONNECTION default Conexión Redis para el driver redis
REDIS_QUEUE default Nombre de la cola en Redis
REDIS_QUEUE_RETRY_AFTER 90 Segundos de reintento para Redis

SQS también lee AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY y AWS_DEFAULT_REGION.

Sesión

Las lee config/session.php. Dos valores por omisión difieren de una instalación normal de Laravel: la duración es de un año, y las banderas de la cookie siguen a APP_DEBUG y APP_PWA.

Variable Valor por omisión Para qué
SESSION_DRIVER file en config, database en .env.example Déjalo en database: la lista de dispositivos en /account y los botones de "desconectar" leen la tabla sessions
SESSION_LIFETIME 525600 Minutos de inactividad antes de que expire una sesión; el valor por omisión es un año. La lista de dispositivos sólo muestra sesiones dentro de esta ventana
SESSION_EXPIRE_ON_CLOSE false Expirar cuando se cierra el navegador
SESSION_ENCRYPT false Cifrar el contenido guardado de la sesión
SESSION_CONNECTION la conexión predeterminada Conexión de base de datos o Redis para la sesión
SESSION_TABLE sessions Tabla para el driver database
SESSION_STORE ninguno Almacén de caché para los drivers memcached, redis y dynamodb
SESSION_COOKIE slug de APP_NAME más -session Nombre de la cookie
SESSION_PATH / Ruta de la cookie
SESSION_DOMAIN ninguno Dominio de la cookie; ponlo para compartir la sesión entre subdominios
SESSION_SECURE_COOKIE false cuando APP_DEBUG está encendido, si no el valor de APP_PWA Mandar la cookie sólo por HTTPS. Una PWA instalada lo necesita
SESSION_HTTP_ONLY true Ocultar la cookie a JavaScript
SESSION_SAME_SITE lax cuando APP_DEBUG está encendido; si no, none si APP_PWA está encendido, y si no lax none es lo que deja a la PWA instalada conservar su sesión; exige la bandera secure
SESSION_PARTITIONED_COOKIE false Particionar la cookie por sitio de nivel superior; necesita secure y same_site=none

Caché

Las lee config/cache.php. El almacén database no necesita ningún servicio extra y es el predeterminado.

Variable Valor por omisión Para qué
CACHE_STORE database array, database, file, memcached, redis, dynamodb, octane o null. También el almacén para la caché de embeddings en config/ai.php
CACHE_PREFIX slug de APP_NAME más -cache- Prefijo que separa dos aplicaciones en una caché compartida
DB_CACHE_CONNECTION la conexión predeterminada Conexión para el almacén database
DB_CACHE_TABLE cache Tabla para el almacén database
DB_CACHE_LOCK_CONNECTION la misma de la caché Conexión para los bloqueos atómicos
DB_CACHE_LOCK_TABLE cache_locks Tabla para los bloqueos atómicos
MEMCACHED_HOST 127.0.0.1 Servidor de Memcached
MEMCACHED_PORT 11211 Puerto de Memcached
MEMCACHED_PERSISTENT_ID ninguno Reusar la conexión entre peticiones
MEMCACHED_USERNAME, MEMCACHED_PASSWORD ninguno Credenciales SASL
REDIS_CACHE_CONNECTION cache Conexión Redis para el almacén redis
REDIS_CACHE_LOCK_CONNECTION default Conexión Redis para los bloqueos
DYNAMODB_CACHE_TABLE cache Tabla para el almacén dynamodb, con las credenciales AWS_*
DYNAMODB_ENDPOINT ninguno Endpoint de un DynamoDB local

Redis

Las lee config/database.php. Sólo hacen falta cuando la cola, la caché o la sesión apuntan a redis. Existen dos conexiones: default en la base 0 y cache en la base 1, compartiendo host y credenciales.

Variable Valor por omisión Para qué
REDIS_CLIENT phpredis La extensión phpredis o el paquete predis
REDIS_URL ninguno Una sola URL que reemplaza host, puerto, usuario y contraseña
REDIS_HOST 127.0.0.1 Servidor
REDIS_PORT 6379 Puerto
REDIS_USERNAME, REDIS_PASSWORD ninguno Credenciales
REDIS_DB 0 Número de base de la conexión default
REDIS_CACHE_DB 1 Número de base de la conexión cache
REDIS_CLUSTER redis Modo de clúster
REDIS_PREFIX slug de APP_NAME más -database- Prefijo de llaves
REDIS_PERSISTENT false Mantener la conexión abierta entre peticiones

Logs

Las lee config/logging.php. El canal predeterminado es daily, que rota storage/logs/laravel.log y conserva catorce días. Todo lo que registres se puede leer en el navegador en /logs; tal como viene, esa ruta no tiene inicio de sesión delante, así que restríngela antes de que el sitio sea público. Vienen dos canales para mandar errores a otro lado: slack publica por un webhook entrante, y slack_api publica con un token de bot; papertrail manda syslog por TLS. Ve Logs y depuración.

Variable Valor por omisión Para qué
LOG_CHANNEL daily Canal que recibe todo. Usa stack para repartir a varios
LOG_STACK daily Canales separados por coma a los que escribe el canal stack, como daily,slack_api
LOG_LEVEL debug; critical para slack Nivel mínimo que se escribe. slack_api está fijo en error
LOG_DAILY_DAYS 14 Días de archivos diarios que se conservan
LOG_DEPRECATIONS_CHANNEL null A dónde van las deprecaciones de PHP y de paquetes; null las descarta
LOG_DEPRECATIONS_TRACE false Incluir la traza con cada deprecación
LOG_SLACK_WEBHOOK_URL ninguno Webhook entrante para el canal slack
LOG_SLACK_USERNAME Laravel Log Nombre del remitente en Slack
LOG_SLACK_EMOJI :boom: Icono del remitente en Slack
SLACK_BOT_TOKEN ninguno Token de bot para el canal slack_api
SLACK_LOG_CHANNEL #errores Canal de Slack al que publica el canal slack_api
PAPERTRAIL_URL ninguno Host de Papertrail
PAPERTRAIL_PORT ninguno Puerto de Papertrail
LOG_PAPERTRAIL_HANDLER SyslogUdpHandler de Monolog Clase del handler para el canal papertrail
LOG_STDERR_FORMATTER ninguno Clase del formateador para el canal stderr, usado en contenedores
LOG_SYSLOG_FACILITY LOG_USER Facility para el canal syslog

Herramientas de desarrollo

Las leen config/debugbar.php y config/querydetector.php. Los dos paquetes son dependencias de desarrollo y se encienden solos cuando APP_DEBUG es true; estas variables lo sobreescriben.

Variable Valor por omisión Para qué
DEBUGBAR_ENABLED sigue a APP_DEBUG Forzar la Debugbar encendida o apagada
DEBUGBAR_OPEN_STORAGE false Dejar que cualquiera abra las peticiones guardadas
DEBUGBAR_EDITOR phpstorm Editor en el que abren los enlaces a archivos
DEBUGBAR_REMOTE_SITES_PATH, DEBUGBAR_LOCAL_SITES_PATH vacío Mapear rutas del contenedor a tu máquina para que los enlaces a archivos resuelvan
DEBUGBAR_THEME auto auto, light o dark
QUERY_DETECTOR_ENABLED sigue a APP_DEBUG Forzar el detector de N+1 encendido o apagado
QUERY_DETECTOR_THRESHOLD 1 Consultas repetidas antes de reportar
QUERY_DETECTOR_LOG_CHANNEL daily A dónde escribe cuando su salida es el log

Más en Trabaja en el código.

Variables que pertenecen a una función

Estas también las lee config/, así que van en este archivo, pero el significado de cada valor se explica en la guía de su función.

Inicio de sesión y verificación, leídas por config/auth.php y config/services.php. Ve Configura el inicio de sesión y el registro, Verifica correo y teléfono y El PIN de seguridad.

Variable Valor por omisión
AUTH_APPROACH CreationValidation
AUTH_LOGIN_STEPS one
AUTH_ENABLE_REGISTER true
AUTH_ENABLE_VALIDATION true
AUTH_ENABLE_PIN false
LOGIN_IDENTITIES email
AUTH_VALIDATION_PROVIDER aws
TELNYX_API_KEY ninguno; cae al nombre anterior TELNYX_TOKEN
TELNYX_VERIFY_PROFILE_ID ninguno
AUTH_PASSWORD_TIMEOUT 10800 segundos antes de que expire una confirmación de contraseña
AUTH_GUARD, AUTH_PASSWORD_BROKER, AUTH_MODEL, AUTH_PASSWORD_RESET_TOKEN_TABLE web, users, App\Models\User, password_reset_tokens: Laravel estándar, sin razón para cambiarlas

Banderas de funciones, leídas por config/features.php. Ve Configura tu proyecto; los valores de referidos se explican en Referidos.

Variable Valor por omisión
FEATURE_PLANS_ENABLED false
FEATURE_ADDONS_ENABLED false
FEATURE_ANNOUNCEMENTS false
FEATURE_TRACKING_ENABLED false
FEATURE_REFERRALS_ENABLED false
FEATURE_REFERRALS_REGISTRATION_REWARD 10
FEATURE_REFERRALS_SUBSCRIPTION_REWARD_PERCENT 10
FEATURE_REFERRALS_CURRENCY mxn
FEATURE_REFERRALS_COOKIE_DAYS 30

Stripe y cobros, leídas por config/services.php, config/pricing.php, el billing-core.php del paquete de cobros y la configuración propia de Laravel Cashier. Ve Enciende planes y cobros y Pruebas gratuitas y cupones.

Variable Valor por omisión
STRIPE_KEY ninguno
STRIPE_SECRET ninguno
STRIPE_WEBHOOK_SECRET ninguno
BILLING_CORE_ENABLED true
BILLING_USER_ENABLED true
BILLING_SUITE_ENABLED nombrada en un bloque de adaptador comentado de billing-core.php; nada la lee hasta que descomentes ese bloque y escribas la clase del adaptador
BILLING_COUPONS_ENABLED true
BILLING_FREE_TRIAL_ENABLED false
BILLING_FREE_TRIAL_DAYS 14
CASHIER_CURRENCY usd, leída por Cashier mismo; la moneda propia del paquete de cobros es el primary_currency committeado en config/pricing.php, mxn
CASHIER_CURRENCY_LOCALE, CASHIER_PATH, CASHIER_WEBHOOK_TOLERANCE, CASHIER_LOGGER propias de Cashier: en, stripe, 300, ninguno

Web push y la PWA, leídas por config/webpush.php y config/app.php. Ve Web push y la PWA.

Variable Valor por omisión
APP_PWA false
VAPID_SUBJECT APP_URL
VAPID_PUBLIC_KEY, VAPID_PRIVATE_KEY ninguno; php artisan webpush:vapid las imprime
VAPID_PEM_FILE ninguno; una alternativa a las dos llaves
WEBPUSH_DB_TABLE push_subscriptions
WEBPUSH_DB_CONNECTION DB_CONNECTION
WEBPUSH_AUTOMATIC_PADDING true

Proveedores de IA, leídas por config/ai.php. El traductor usa el proveedor nombrado en el default committeado, que es openai, así que OPENAI_API_KEY es la que importa a menos que cambies esa llave. Ve Conecta un proveedor de IA.

Variable Valor por omisión
OPENAI_API_KEY ninguno
OPENAI_URL https://api.openai.com/v1
ANTHROPIC_API_KEY ninguno
ANTHROPIC_URL https://api.anthropic.com/v1
GEMINI_API_KEY ninguno
GEMINI_URL https://generativelanguage.googleapis.com/v1beta/
AZURE_OPENAI_API_KEY, AZURE_OPENAI_URL ninguno
AZURE_OPENAI_API_VERSION 2025-04-01-preview
AZURE_OPENAI_DEPLOYMENT gpt-4o
AZURE_OPENAI_EMBEDDING_DEPLOYMENT text-embedding-3-small
AZURE_OPENAI_IMAGE_DEPLOYMENT gpt-image-1
AWS_BEDROCK_REGION us-east-1
AWS_BEARER_TOKEN_BEDROCK, AWS_SESSION_TOKEN ninguno
AWS_USE_DEFAULT_CREDENTIALS true
COHERE_API_KEY, DEEPSEEK_API_KEY, ELEVENLABS_API_KEY, GROQ_API_KEY, JINA_API_KEY, MISTRAL_API_KEY, OPENROUTER_API_KEY, VOYAGEAI_API_KEY, XAI_API_KEY ninguno
OLLAMA_API_KEY vacío; Ollama no necesita llave
OLLAMA_URL http://localhost:11434

Detección de país, leídas por config/services.php y config/app.php. Ve Detecta el país del visitante.

Variable Valor por omisión
WEBLABOR_WORLD_TOKEN ninguno; sin él el país igual se detecta por la IP, pero nada se consulta en Weblabor World
WEBLABOR_WORLD_ENDPOINT https://world.weblabor.mx/api, leída por el paquete World UI y no por config/
COUNTRY_CODE_FALLBACK US

Seguimiento, leídas por config/services.php y config/features.php. Ve Seguimiento y analítica.

Variable Valor por omisión
FEATURE_TRACKING_ENABLED false
FACEBOOK_ACCESS_TOKEN, FACEBOOK_PIXEL_ID ninguno; hacen falta las dos antes de que un evento se mande a Facebook
FACEBOOK_TEST_EVENT_CODE ninguno

Registro de actividad, leídas por config/activitylog.php. Ve Registro de actividad.

Variable Valor por omisión
ACTIVITY_LOGGER_ENABLED true
ACTIVITY_LOGGER_DB_CONNECTION la conexión predeterminada

El botón de despliegue de la DevZone, el único lugar donde una variable se lee directo de .env en vez de a través de config/. Ve La DevZone.

Variable Valor por omisión
GIT_USER, GIT_PASSWORD ninguno; el despliegue en /admin/dev se niega a hacer pull hasta que las dos estén puestas, y las usa como credenciales de Git para git pull

Después de cambiar un valor

Una aplicación corriendo lee .env en cada petición sólo mientras la configuración no está cacheada. Después de php artisan config:cache, que todo despliegue debería correr, un cambio en .env no hace nada hasta que lo vuelvas a correr o lo limpies con php artisan config:clear. El worker de la cola también guarda su propia copia: reinícialo con php artisan queue:restart después de cualquier cambio que deba ver.