Produktions-Env-Loading fuer echtes Webhosting ergaenzen
PHP-FPM/mod_php auf Shared Hosting erbt keine shell-exportierten Umgebungsvariablen wie der lokale Dev-Server. app/bootstrap.php laedt jetzt optional env.local.php (nicht eingecheckt, siehe env.local.example.php als Vorlage) und setzt die Variablen per putenv(), bevor irgendein app_env()/getenv()-Aufruf passiert. Greift jetzt auch fuer CLI-Skripte (migrate.php, grant-platform-admin.php) ueber scripts/dev-db.php.
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
.env.local
|
.env.local
|
||||||
|
env.local.php
|
||||||
.local/
|
.local/
|
||||||
uploads/
|
uploads/
|
||||||
var/
|
var/
|
||||||
|
|||||||
@@ -6,6 +6,17 @@ if (!defined('APP_ROOT')) {
|
|||||||
define('APP_ROOT', dirname(__DIR__));
|
define('APP_ROOT', dirname(__DIR__));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Auf echtem Webhosting (PHP-FPM/mod_php) gibt es meist keine bequeme
|
||||||
|
// Moeglichkeit, Prozess-Umgebungsvariablen zu setzen wie beim lokalen
|
||||||
|
// `source .env.local` vor dem PHP-Dev-Server. env.local.php ist die
|
||||||
|
// Produktions-Entsprechung: eine nicht eingecheckte Datei mit putenv()-
|
||||||
|
// Aufrufen, siehe env.local.example.php. Existiert sie nicht (lokale
|
||||||
|
// Entwicklung), passiert hier nichts und getenv() liest wie bisher aus
|
||||||
|
// der Shell-Umgebung.
|
||||||
|
if (is_file(APP_ROOT . '/env.local.php')) {
|
||||||
|
require_once APP_ROOT . '/env.local.php';
|
||||||
|
}
|
||||||
|
|
||||||
function app_env(string $name, ?string $default = null): ?string
|
function app_env(string $name, ?string $default = null): ?string
|
||||||
{
|
{
|
||||||
$value = getenv($name);
|
$value = getenv($name);
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Vorlage fuer die Produktionskonfiguration auf echtem Webhosting.
|
||||||
|
*
|
||||||
|
* Kopieren nach `env.local.php` (ohne ".example") direkt auf dem Webspace
|
||||||
|
* per SFTP - NICHT einchecken, die Datei enthaelt echte Zugangsdaten.
|
||||||
|
* `env.local.php` steht in .gitignore.
|
||||||
|
*
|
||||||
|
* Wird automatisch von app/bootstrap.php geladen, sobald die Datei
|
||||||
|
* existiert (lokal beim Dev-Server ueblicherweise nicht vorhanden -
|
||||||
|
* dort kommen die Werte weiterhin aus `source .env.local`).
|
||||||
|
*/
|
||||||
|
|
||||||
|
putenv('APP_ENV=prod');
|
||||||
|
|
||||||
|
// Eigene App-Domain. Nur Traffic mit genau diesem Host-Header bekommt das
|
||||||
|
// Dashboard/Login/etc.; jeder andere Host (z. B. kaffeeliste.de) zeigt
|
||||||
|
// stattdessen die Landingpage. Siehe index.php.
|
||||||
|
putenv('APP_HOST=app.kaffeeliste.de');
|
||||||
|
|
||||||
|
putenv('APP_DB_DRIVER=mysql');
|
||||||
|
putenv('DB_HOST=');
|
||||||
|
putenv('DB_PORT=3306');
|
||||||
|
putenv('DB_NAME=');
|
||||||
|
putenv('DB_USER=');
|
||||||
|
putenv('DB_PASS=');
|
||||||
|
|
||||||
|
// Muss ausserhalb des oeffentlichen Webroots oder zumindest per .htaccess
|
||||||
|
// gesperrt sein - siehe Deployment-Hinweise.
|
||||||
|
putenv('APP_SESSION_PATH=' . __DIR__ . '/var/sessions');
|
||||||
|
|
||||||
|
putenv('APP_MAIL_TRANSPORT=mail');
|
||||||
|
putenv('APP_MAIL_FROM=noreply@kaffeeliste.de');
|
||||||
|
putenv('APP_MAIL_FROM_NAME=Kaffeeliste');
|
||||||
|
|
||||||
|
putenv('STRIPE_SECRET_KEY=');
|
||||||
|
putenv('STRIPE_PUBLISHABLE_KEY=');
|
||||||
|
putenv('STRIPE_WEBHOOK_SECRET=');
|
||||||
|
|
||||||
|
putenv('DOLIBARR_URL=https://verwaltung.ctb-it.de');
|
||||||
|
putenv('DOLIBARR_API_KEY=');
|
||||||
|
|
||||||
|
// WICHTIG: DEV_AUTH_EMAIL hier NICHT setzen (auch nicht auskommentiert
|
||||||
|
// stehen lassen und aus Versehen aktivieren). Ist diese Variable gesetzt,
|
||||||
|
// wird JEDER Besucher ohne echten Login automatisch als dieser Nutzer
|
||||||
|
// behandelt (Login-Bypass fuer die alte Default-Mandant-Pruefung,
|
||||||
|
// siehe functions.php). Nur fuer den lokalen Dev-Server gedacht.
|
||||||
@@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
require_once __DIR__ . '/../app/bootstrap.php';
|
||||||
|
|
||||||
function dev_required_env(string $name): string
|
function dev_required_env(string $name): string
|
||||||
{
|
{
|
||||||
$value = getenv($name);
|
$value = getenv($name);
|
||||||
|
|||||||
Reference in New Issue
Block a user