php - servidor - subir proyecto laravel a 000webhost
Recargando las variables.env sin reiniciar el servidor(Laravel 5, alojamiento compartido) (5)
Mi Laravel 5 se ha ejecutado en forma correcta hasta que se configuró la base de datos, luego se encontró este error:
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known
Al investigar un poco, parece que configuré el acceso a MySQL demasiado tarde, así que debo reiniciar el servidor para obtener las variables de entorno correctas. Bueno, estoy usando el servidor compartido de Dreamhost y no puedo hacer eso.
¿Cómo debo solucionar este problema?
Gracias
En config/database.php
cambié la conexión DB predeterminada de mysql a sqlite. .env
archivo .env
(en realidad lo .env
) y creé el archivo sqlite con touch storage/database.sqlite
. La migración trabajó con sqlite.
Luego volví a cambiar la conexión predeterminada de DB config/database.php
a mysql y recuperé el archivo .env
. La migración trabajó con mysql.
No tiene sentido, supongo. Tal vez fue algo al lado del servidor.
En caso de que alguien se tope con esta pregunta que no pueda recargar su servidor web (comando de consola de larga ejecución como un corredor de cola) o necesite recargar su archivo .env a mitad de la solicitud, encontré una manera de recargar correctamente las variables .env en el nivel 5.
use Dotenv;
use InvalidArgumentException;
try {
Dotenv::makeMutable();
Dotenv::load(app()->environmentPath(), app()->environmentFile());
Dotenv::makeImmutable();
} catch (InvalidArgumentException $e) {
//
}
Es posible que sus variables de configuración estén en caché. Verifique su config/app.php
así como su archivo .env
luego intente
php artisan cache:clear
en la linea de comando
Si ha ejecutado php artisan config:cache
en su servidor, entonces su aplicación Laravel podría almacenar en caché las configuraciones de configuración obsoletas que haya puesto en el archivo .env
.
Ejecute php artisan config:clear
para corregirlo.
Una solución corta:
use Dotenv;
with(new Dotenv(app()->environmentPath(), app()->environmentFile()))->overload();
with(new LoadConfiguration())->bootstrap(app());
En mi caso, tuve que restablecer la conexión de la base de datos después de modificar .env mediante programación, pero no funcionó. Si te metes en este problema, prueba esto.
app(''db'')->purge($connection->getName());
después de volver a cargar .env, eso se debe a que la aplicación Laravel podría haber accedido a la conexión predeterminada antes y el /Illuminate/Database/DatabaseManager
necesita volver a leer los parámetros de configuración.