config.inc.php en detalle¶
web/config.inc.php es el archivo propio de cada instalación. Contiene reglas
locales y normalmente secretos. Forma parte del entorno operativo, no del
código de la aplicación.
Crear el archivo¶
Partir siempre del ejemplo de la misma versión MRBS.
Orden de carga¶
MRBS carga los valores globales, los valores para áreas nuevas,
config.inc.php, la configuración del sitio y finalmente las validaciones.
Una asignación posterior sustituye a una anterior.
flowchart LR
System[Valores globales] --> Area[Áreas nuevas]
Area --> Local[config.inc.php]
Local --> Site[Configuración del sitio]
Site --> Check[Validación]
Las áreas existentes se editan desde Salas y se almacenan en la base.
Sintaxis PHP¶
$timezone = 'Europe/Madrid';
$default_view = 'week';
$kiosk_mode_enabled = false;
$search['count'] = 30;
Use booleanos reales, no cadenas:
$mail_settings['disabled'] = false; // Correcto
$mail_settings['disabled'] = "false"; // Incorrecto: cadena no vacía
Las matrices pueden usar cualquiera de las sintaxis admitidas por PHP:
Termine las instrucciones con ; y no añada ?>.
Configuración mínima¶
$timezone = 'Europe/Madrid';
$dbsys = 'mysql';
$db_host = 'localhost';
$db_database = 'mrbs';
$db_login = 'mrbs';
$db_password = 'sustituir-esta-contraseña';
$db_tbl_prefix = 'mrbs_';
$db_persist = false;
Para PostgreSQL, usar $dbsys = 'pgsql';. El prefijo debe coincidir con el
esquema. 127.0.0.1 fuerza TCP cuando MySQL interpreta localhost como socket.
Configuración de la base¶
Elegir la base¶
Para MySQL o MariaDB:
Para PostgreSQL:
Comportamiento de conexión¶
En MySQL, localhost puede seleccionar un socket Unix. Use 127.0.0.1 para
forzar TCP. Un puerto no estándar se indica por separado:
PostgreSQL puede seleccionar un esquema:
El prefijo debe coincidir con el esquema instalado:
Active conexiones persistentes solo después de medir y revisar transacciones y bloqueos.
URL y proxy inverso¶
MRBS suele deducir su URL. Detrás de un proxy o prefijo, copiar desde
systemdefaults.inc.php los ajustes de URL necesarios. Probar redirecciones,
enlaces de correo, iCalendar, quiosco, multisitio y HTTPS.
Autenticación y sesiones¶
$auth['type'] = 'db';
$auth['session'] = 'php';
$auth['deny_public_access'] = true;
$auth['admin_must_obey_policies'] = true;
No conservar usuarios de ejemplo. Probar usuario normal, administrador y visitante sin sesión. Véase Autenticación.
Un sistema externo requiere sus propios ajustes, por ejemplo:
Control de acceso¶
Revise conjuntamente acceso público, informes, quiosco y privacidad:
$auth['deny_public_access'] = true;
$auth['only_admin_can_book'] = false;
$auth['admin_must_obey_policies'] = true;
Calendario e interfaz¶
Los formatos dependen de la configuración regional. Copie la entrada completa
de $datetime_formats si la modifica.
Políticas de reserva¶
Las políticas de áreas existentes se administran en la interfaz. Agrupar los límites globales y documentar su motivo:
Correo¶
$mail_settings['admin_backend'] = 'smtp';
$mail_settings['from'] = 'mrbs@example.org';
$smtp_settings['host'] = 'mail.example.org';
$smtp_settings['port'] = 587;
$smtp_settings['secure'] = 'tls';
Mantenga la verificación de certificados y proteja las credenciales. Véase Notificaciones por correo.
Idioma y textos locales¶
Personalice etiquetas sin modificar web/lang/lang.*:
$vocab_override evita modificar archivos lang.*. Véase
Textos y traducciones.
Campos personalizados¶
Los campos de base de datos propios pueden etiquetarse y configurarse:
$vocab_override['es']['room.coffee_machine'] = 'Cafetera';
$select_options['entry.catering'] = array(
'c' => 'Café',
's' => 'Bocadillos'
);
$is_mandatory_field['entry.catering'] = true;
Cree primero las columnas. Una columna propia de entry requiere otra
idéntica en repeat.
Véase Campos personalizados para tipos, esquema, validación y privacidad.
Incluir secretos¶
Los secretos deben quedar fuera de la raíz web y cargarse con una ruta absoluta:
El archivo debe quedar fuera de la raíz web. También se pueden leer variables de entorno de forma explícita:
Compruebe que una variable de entorno obligatoria no esté vacía.
Multisitio¶
En multisitio, cada sitio necesita como mínimo un prefijo de tablas distinto:
Autenticación, correo y tema pueden variar. Véase Multisitio.
Depuración¶
Active la depuración solo temporalmente y mantenga:
Mantenimiento durante actualizaciones¶
Al actualizar, partir del ejemplo nuevo, comparar los ajustes anteriores y transferir solo los necesarios.
Lista de validación¶
Probar después base, zonas horarias, acceso, permisos, reservas, correo, informes, exportación, quiosco y multisitio. Los registros no deben contener contraseñas ni datos privados.
Organización recomendada¶
Mantenga el archivo corto y agrupe sus ajustes:
<?php
declare(strict_types=1);
namespace MRBS;
// Zona horaria
$timezone = 'Europe/Madrid';
// Base de datos
$dbsys = 'mysql';
// Autenticación
$auth['type'] = 'db';
$auth['session'] = 'php';
Comente el motivo de los valores no evidentes.