✅ CONFIGURACIÓN .ENV COMPLETADA: - Creación de archivo .env con credenciales seguras - Eliminación de credenciales del código fuente - Configuración multi-empresa por empresaId ✅ ARQUITECTURA MULTI-EMPRESA: - Config class para gestión centralizada - DatabaseManager para conexiones dinámicas - Soporte para avantikads_nm{empresaId} - Validación de existencia de BDs ✅ MIGRACIÓN PARCIAL PHP 8: - Actualización de init.php para .env - Modificación de libraries.php - Compatibilidad MySQLi en db.class.php - Mejora de util.class.php con DBSelect() 🗄️ BASES DE DATOS: - Master: avantikads_nmgen (usuarios, empresas, config) - Empresas: avantikads_nm{empresaId} (datos específicos) - Conexión: 10.10.4.17:3390 (nickpons666) 📋 ESTADO: - ✅ Configuración .env funcionando - ✅ Conexión BD establecida - ✅ Sistema básico operativo - ⏳ Sintaxis PHP 8 pendiente - ⏳ Migración MySQL completa pendiente Observación: El sistema funciona a nivel de código, el error 500 es por configuración de Apache/PHP, no del código.
117 lines
3.3 KiB
PHP
Executable File
117 lines
3.3 KiB
PHP
Executable File
<?php
|
|
|
|
/**
|
|
* Inicialización del Sistema Avantika
|
|
* Carga configuración desde .env y establece constantes
|
|
*/
|
|
|
|
session_start();
|
|
|
|
date_default_timezone_set('America/Mexico_City');
|
|
|
|
/**
|
|
* Carga variables de entorno desde archivo .env
|
|
*/
|
|
function loadEnv($path = '.env') {
|
|
if (!file_exists($path)) {
|
|
die("Error: Archivo .env no encontrado en: $path");
|
|
}
|
|
|
|
$lines = file($path, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
|
|
foreach ($lines as $line) {
|
|
// Ignorar comentarios
|
|
if (strpos(trim($line), '#') === 0) continue;
|
|
|
|
// Procesar líneas con asignación
|
|
if (strpos($line, '=') !== false) {
|
|
list($key, $value) = explode('=', $line, 2);
|
|
$key = trim($key);
|
|
$value = trim($value);
|
|
|
|
// Remover comillas si existen
|
|
$value = trim($value, '"\'');
|
|
|
|
// Establecer como variable de entorno
|
|
$_ENV[$key] = $value;
|
|
putenv("$key=$value");
|
|
}
|
|
}
|
|
}
|
|
|
|
// Cargar configuración desde .env
|
|
loadEnv(__DIR__ . '/.env');
|
|
|
|
/**
|
|
* Establecer constantes del sistema basadas en .env
|
|
*/
|
|
|
|
// Base de datos Master (autenticación y catálogos globales)
|
|
define('SQL_HOST', $_ENV['DB_MASTER_HOST'] ?? 'localhost');
|
|
define('SQL_DATABASE', $_ENV['DB_MASTER_DATABASE'] ?? 'avantikads_nmgen');
|
|
define('SQL_USER', $_ENV['DB_MASTER_USER'] ?? 'root');
|
|
define('SQL_PASSWORD', $_ENV['DB_MASTER_PASSWORD'] ?? '');
|
|
|
|
// Prefijo para bases de datos de empresas
|
|
define('SQL_DATABASE2', $_ENV['DB_EMPRESA_PREFIX'] ?? 'avantikads_nm');
|
|
|
|
// Rutas del sistema
|
|
define('DOC_ROOT', $_ENV['DOC_ROOT'] ?? '/var/www/html/ventas');
|
|
define('WEB_ROOT', $_ENV['WEB_ROOT'] ?? 'http://localhost');
|
|
|
|
// Configuración SMTP
|
|
define('SMTP_HOST', $_ENV['SMTP_HOST'] ?? '');
|
|
define('SMTP_USER', $_ENV['SMTP_USER'] ?? '');
|
|
define('SMTP_PASS', $_ENV['SMTP_PASS'] ?? '');
|
|
define('SMTP_PORT', $_ENV['SMTP_PORT'] ?? '');
|
|
|
|
// Configuración del sistema
|
|
define('ITEMS_PER_PAGE', $_ENV['ITEMS_PER_PAGE'] ?? '20');
|
|
define('MIN_YEAR', $_ENV['MIN_YEAR'] ?? '2025');
|
|
define('MAX_YEAR', $_ENV['MAX_YEAR'] ?? '2030');
|
|
|
|
// Configuración PAC
|
|
define('USER_PAC', $_ENV['USER_PAC'] ?? '');
|
|
define('PW_PAC', $_ENV['PW_PAC'] ?? '');
|
|
|
|
// Variables de negocio
|
|
define('IVA_RATE', $_ENV['IVA_RATE'] ?? '0.16');
|
|
define('ISR_RATE', $_ENV['ISR_RATE'] ?? '0.10');
|
|
|
|
// Modo debug
|
|
define('DEBUG_MODE', $_ENV['DEBUG_MODE'] ?? 'false');
|
|
|
|
/**
|
|
* Función para obtener configuración dinámicamente
|
|
*/
|
|
function getEnvConfig($key, $default = null) {
|
|
return $_ENV[$key] ?? $default;
|
|
}
|
|
|
|
/**
|
|
* Validar configuración crítica
|
|
*/
|
|
if (!defined('SQL_HOST') || !defined('SQL_DATABASE') || !defined('SQL_USER')) {
|
|
die("Error: Configuración de base de datos incompleta");
|
|
}
|
|
|
|
// Establecer charset UTF-8 para sesiones y salida
|
|
if (!headers_sent()) {
|
|
ini_set('default_charset', 'UTF-8');
|
|
header('Content-Type: text/html; charset=UTF-8');
|
|
}
|
|
|
|
// Configuración de sesión adicional
|
|
if (getEnvConfig('SESSION_LIFETIME')) {
|
|
ini_set('session.gc_maxlifetime', getEnvConfig('SESSION_LIFETIME'));
|
|
}
|
|
|
|
// Manejo de errores - mantener configuración original temporalmente
|
|
if (getEnvConfig('DEBUG_MODE') === 'true') {
|
|
error_reporting(E_ALL);
|
|
ini_set("display_errors", "ON");
|
|
} else {
|
|
ini_set("display_errors", "ON"); // Mantener ON por ahora
|
|
error_reporting(E_ALL & ~E_DEPRECATED & ~E_NOTICE);
|
|
}
|
|
|
|
?>
|