Saltar a contenido

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

cd /var/www/mrbs
cp config.inc.php-sample config.inc.php

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:

$auth['admin'] = array('alice', 'bob');
$report_open_areas = [1, 3];

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:

$dbsys = 'mysql';

Para PostgreSQL:

$dbsys = 'pgsql';

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:

$db_host = '127.0.0.1';
$db_port = 3306;

PostgreSQL puede seleccionar un esquema:

$db_schema = 'public';

El prefijo debe coincidir con el esquema instalado:

$db_tbl_prefix = 'mrbs_';

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:

$auth['type'] = 'ldap';
$auth['session'] = 'php';

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

$default_view = 'week';
$weekstarts = 1;
$display_mincals = true;

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:

$max_per_interval_global_enabled['future'] = true;
$max_per_interval_global['future'] = 20;

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

$default_language_tokens = 'es';

Personalice etiquetas sin modificar web/lang/lang.*:

$vocab_override['es']['mrbs'] = 'Reserva de recursos';

$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:

require '/etc/mrbs/database-secrets.php';

El archivo debe quedar fuera de la raíz web. También se pueden leer variables de entorno de forma explícita:

$db_password = getenv('MRBS_DB_PASSWORD');

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:

$multisite = true;
$db_tbl_prefix = 'madrid_';

Autenticación, correo y tema pueden variar. Véase Multisitio.

Depuración

Active la depuración solo temporalmente y mantenga:

$auth['log_credentials'] = false;

Mantenimiento durante actualizaciones

Al actualizar, partir del ejemplo nuevo, comparar los ajustes anteriores y transferir solo los necesarios.

Lista de validación

php -l /var/www/mrbs/config.inc.php

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.