edited
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -25,3 +25,4 @@ bodycomfortphysio.de.code-workspace
|
||||
*.log
|
||||
|
||||
|
||||
source/.env
|
||||
|
||||
@@ -114,6 +114,6 @@ module.exports = {
|
||||
host: 'bodycomfortphysio@152.53.119.146',
|
||||
path: '/home/bodycomfortphysio/htdocs/bodycomfortphysio.de',
|
||||
port: 2222,
|
||||
excludes: ['.DS_Store', '.git']
|
||||
excludes: ['.DS_Store', '.git', '.env']
|
||||
}
|
||||
};
|
||||
24
source/.env.example
Normal file
24
source/.env.example
Normal file
@@ -0,0 +1,24 @@
|
||||
APP_ENV=dev
|
||||
DB_HOST_DEV=127.0.0.1
|
||||
DB_PORT_DEV=3307
|
||||
DB_NAME_DEV=bodycomfort
|
||||
DB_USER_DEV=appuser
|
||||
DB_PASS_DEV=change_me_app
|
||||
|
||||
DB_HOST_PROD=localhost
|
||||
DB_PORT_PROD=3306
|
||||
DB_NAME_PROD=bodycomfort
|
||||
DB_USER_PROD=appuser
|
||||
DB_PASS_PROD=CHANGEME
|
||||
|
||||
SMTP_HOST=mail.example.com
|
||||
SMTP_PORT=465
|
||||
SMTP_USER=noreply@example.com
|
||||
SMTP_PASS=CHANGEME
|
||||
|
||||
FROM_ADDRESS=noreply@example.com
|
||||
TO_ADDRESS_DEV=dev@example.com
|
||||
TO_ADDRESS_PROD=prod@example.com
|
||||
|
||||
TURNSTILE_SITE_KEY=CHANGEME
|
||||
TURNSTILE_SECRET=CHANGEME
|
||||
@@ -18,7 +18,7 @@
|
||||
<ul class="icons">
|
||||
<li><a href="#" class="icon brands fa-facebook-f"><span class="label">Facebook</span></a></li>
|
||||
<li><a href="https://www.instagram.com/bodycomfortphysio/" class="icon brands fa-instagram"><span class="label">Instagram</span></a></li>
|
||||
<li><a href="#" class="icon brands fa-whatsapp"><span class="label">Whatsapp</span></a></li>
|
||||
<li><a href="https://wa.me/4917680820142" class="icon brands fa-whatsapp"><span class="label">Whatsapp</span></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -4,60 +4,72 @@ declare(strict_types=1);
|
||||
ini_set('display_errors', '1');
|
||||
ini_set('display_startup_errors', '1');
|
||||
error_reporting(E_ALL);
|
||||
// Umgebung bestimmen: .env (lokal) oder Domain-Match
|
||||
$host = $_SERVER['HTTP_HOST'] ?? '';
|
||||
$appEnv = getenv('APP_ENV') ?: '';
|
||||
$isProd = in_array(strtolower($appEnv), ['prod','production'], true)
|
||||
|| preg_match('~(^|\.)bodycomfortphysio\.de$~i', $host);
|
||||
|
||||
// .env nur lokal laden (PHP läuft lokal; DB in Docker)
|
||||
if (!$isProd) {
|
||||
$dotenv = __DIR__.'/../.env';
|
||||
if (is_file($dotenv)) {
|
||||
foreach (file($dotenv, FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES) as $line) {
|
||||
if ($line[0]==='#' || !str_contains($line,'=')) continue;
|
||||
[$k,$v] = array_map('trim', explode('=', $line, 2));
|
||||
if ($k !== '' && getenv($k) === false) putenv("$k=$v");
|
||||
}
|
||||
}
|
||||
// Helper: env mit Fallback
|
||||
function envv(string $key, $default = null) {
|
||||
$v = getenv($key);
|
||||
if ($v !== false && $v !== '') return $v;
|
||||
if (isset($_ENV[$key]) && $_ENV[$key] !== '') return $_ENV[$key];
|
||||
if (isset($_SERVER[$key]) && $_SERVER[$key] !== '') return $_SERVER[$key];
|
||||
return $default;
|
||||
}
|
||||
|
||||
// .env immer laden (falls vorhanden)
|
||||
// überschreibt nur fehlende Variablen
|
||||
$dotenvFile = __DIR__ . '/../.env';
|
||||
if (is_file($dotenvFile)) {
|
||||
foreach (file($dotenvFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) as $line) {
|
||||
if ($line[0] === '#' || !str_contains($line, '=')) continue;
|
||||
[$k, $v] = array_map('trim', explode('=', $line, 2));
|
||||
if ($k !== '' && getenv($k) === false) {
|
||||
putenv("$k=$v");
|
||||
$_ENV[$k] = $v;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Umgebung bestimmen: per Variable oder Domain-Match
|
||||
$host = $_SERVER['HTTP_HOST'] ?? '';
|
||||
$appEnv = strtolower(envv('APP_ENV', ''));
|
||||
$isProd = in_array($appEnv, ['prod','production'], true)
|
||||
|| preg_match('~(^|\.)bodycomfortphysio\.de$~i', $host);
|
||||
|
||||
date_default_timezone_set('Europe/Berlin');
|
||||
|
||||
$CFG = [
|
||||
'env' => $isProd ? 'prod' : 'dev',
|
||||
|
||||
// DB: DEV = Docker auf 127.0.0.1:3307, PROD = Cloudpanel
|
||||
// DB
|
||||
'db' => $isProd ? [
|
||||
'host' => getenv('DB_HOST_PROD') ?: '127.0.0.1',
|
||||
'port' => (int)(getenv('DB_PORT_PROD') ?: 3306),
|
||||
'name' => getenv('DB_NAME_PROD') ?: 'bodycomfort',
|
||||
'user' => getenv('DB_USER_PROD') ?: 'appuser',
|
||||
'pass' => getenv('DB_PASS_PROD') ?: '',
|
||||
'host' => envv('DB_HOST_PROD', '127.0.0.1'),
|
||||
'port' => (int)envv('DB_PORT_PROD', 3306),
|
||||
'name' => envv('DB_NAME_PROD', 'bodycomfort'),
|
||||
'user' => envv('DB_USER_PROD', 'appuser'),
|
||||
'pass' => envv('DB_PASS_PROD', ''), // leerer String => Fehler erzwingen
|
||||
] : [
|
||||
'host' => getenv('DB_HOST_DEV') ?: '127.0.0.1', // Docker-DB erreichbar vom Host
|
||||
'port' => (int)(getenv('DB_PORT_DEV') ?: 3307), // dein Compose-Port
|
||||
'name' => getenv('DB_NAME_DEV') ?: 'bodycomfort',
|
||||
'user' => getenv('DB_USER_DEV') ?: 'appuser',
|
||||
'pass' => getenv('DB_PASS_DEV') ?: 'change_me_app',
|
||||
'host' => envv('DB_HOST_DEV', '127.0.0.1'),
|
||||
'port' => (int)envv('DB_PORT_DEV', 3307),
|
||||
'name' => envv('DB_NAME_DEV', 'bodycomfort'),
|
||||
'user' => envv('DB_USER_DEV', 'appuser'),
|
||||
'pass' => envv('DB_PASS_DEV', 'change_me_app'),
|
||||
],
|
||||
|
||||
// Mail: DEV zu dir, PROD zur Kundin
|
||||
// Mail
|
||||
'mail' => [
|
||||
'smtp_host' => getenv('SMTP_HOST') ?: 'mail.davidt.cloud',
|
||||
'smtp_port' => (int)(getenv('SMTP_PORT') ?: 465),
|
||||
'smtp_user' => getenv('SMTP_USER') ?: 'noreply@bodycomfortphysio.de',
|
||||
'smtp_pass' => getenv('SMTP_PASS') ?: '',
|
||||
'from_address' => getenv('FROM_ADDRESS') ?: 'noreply@bodycomfortphysio.de',
|
||||
'smtp_host' => envv('SMTP_HOST', 'mail.davidt.cloud'),
|
||||
'smtp_port' => (int)envv('SMTP_PORT', 465),
|
||||
'smtp_user' => envv('SMTP_USER', 'noreply@bodycomfortphysio.de'),
|
||||
'smtp_pass' => envv('SMTP_PASS', ''),
|
||||
'from_address' => envv('FROM_ADDRESS', 'noreply@bodycomfortphysio.de'),
|
||||
'from_name' => 'Body Comfort Physio',
|
||||
'to_address' => $isProd
|
||||
? (getenv('TO_ADDRESS_PROD') ?: 'praxis@bodycomfortphysio.de')
|
||||
: (getenv('TO_ADDRESS_DEV') ?: 'info@davidt.de'),
|
||||
? envv('TO_ADDRESS_PROD', 'praxis@bodycomfortphysio.de')
|
||||
: envv('TO_ADDRESS_DEV', 'info@davidt.de'),
|
||||
],
|
||||
|
||||
'captcha' => [
|
||||
'site_key' => getenv('TURNSTILE_SITE_KEY') ?: '0x4AAAAAABz-U5tRwpxNWlwM',
|
||||
'secret' => getenv('TURNSTILE_SECRET') ?: '0x4AAAAAABz-U5ZZW8H32c3exvRib8gs9E8',
|
||||
'site_key' => envv('TURNSTILE_SITE_KEY', ''),
|
||||
'secret' => envv('TURNSTILE_SECRET', ''),
|
||||
],
|
||||
|
||||
'practice' => ['address' => 'Herrenpfad-Süd 12, 41334 Nettetal'],
|
||||
@@ -72,7 +84,7 @@ function cfg(string $path, $default=null) {
|
||||
} return $n;
|
||||
}
|
||||
|
||||
// DB helper (optional)
|
||||
// DB helper
|
||||
function db(): PDO {
|
||||
static $pdo;
|
||||
if ($pdo) return $pdo;
|
||||
|
||||
Reference in New Issue
Block a user