subir servidor proyecto compartido 000webhost php mysql laravel laravel-5 dreamhost

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.