config.inc.php em profundidade¶
web/config.inc.php é o arquivo de configuração de propriedade da instalação para MRBS. Ele contém comportamento específico do site e geralmente contém segredos. Trate-o como uma configuração de produção, não como um arquivo de origem do aplicativo.
Crie o arquivo¶
MRBS envia web/config.inc.php-sample, mas deliberadamente não envia um config.inc.php ativo.
Comece com a amostra da mesma versão MRBS. Não carregue uma amostra antiga inalterada.
Como a configuração é carregada¶
O bootstrap compartilhado carrega a configuração nesta ordem:
systemdefaults.inc.phpareadefaults.inc.phpconfig.inc.phpsite_config.inc- validação interna e tratamento de compatibilidade
As atribuições posteriores substituem as anteriores. É por isso que um config.inc.php curto pode substituir os padrões do aplicativo sem modificar os arquivos de versão.
flowchart LR
System[System defaults] --> Area[New-area defaults]
Area --> Local[config.inc.php]
Local --> Site[Site-specific config]
Site --> Check[Validation and compatibility]
Important
Os valores de área já armazenados no banco de dados são editados através de Salas. Alterar areadefaults.inc.php ou substituir config.inc.php não reescreve as áreas existentes.
Sintaxe PHP¶
A configuração é executável PHP. Toda instrução termina com ponto e vírgula. Strings podem usar aspas simples ou duplas:
$timezone = 'Europe/Berlin';
$default_view = "week";
$kiosk_mode_enabled = false;
$search["count"] = 30;
Use booleanos PHP reais, não strings:
$mail_settings['disabled'] = false; // Correct
$mail_settings['disabled'] = "false"; // Wrong: this is a non-empty string
Matrizes podem usar a sintaxe PHP suportada:
Não adicione uma tag de fechamento ?>. Pode introduzir saída acidental e quebrar cabeçalhos ou cookies.
Configurações mínimas¶
Um novo site normalmente precisa de um fuso horário da sala e de uma conexão com o banco de dados:
$timezone = 'Europe/Berlin';
$dbsys = 'mysql';
$db_host = 'localhost';
$db_database = 'mrbs';
$db_login = 'mrbs';
$db_password = 'replace-this-password';
$db_tbl_prefix = 'mrbs_';
$db_persist = false;
Use o fuso horário onde as salas estão localizadas. Pode ser diferente do fuso horário do servidor.
Configuração do banco de dados¶
Selecione o banco de dados¶
ou:
Comportamento de conexão¶
localhost pode selecionar um soquete Unix dependendo do driver. Use 127.0.0.1 para forçar o TCP para MySQL. Uma porta não padrão pode ser especificada separadamente:
PostgreSQL instalações com vários esquemas podem definir:
O prefixo da tabela deve corresponder ao esquema instalado:
As conexões persistentes estão desabilitadas por padrão. Habilite-os somente após mensurar uma necessidade real e entender sua interação com transações e bloqueios.
Configurações de URL e proxy reverso¶
MRBS geralmente deriva seu URL da solicitação. Quando um proxy reverso, prefixo de caminho ou configuração incomum de host virtual tornar isso não confiável, copie as configurações de URL relevantes de systemdefaults.inc.php e defina uma base pública explícita.
A URL externa deve usar o esquema e o host vistos pelos usuários. Configure o proxy para passar informações de esquema e host confiáveis e rejeitar cabeçalhos de host não confiáveis.
Após alterar o comportamento do URL, teste:
- redireciona após login;
- links em e-mail;
- URLs do iCalendar;
- links de saída do quiosque;
- links multisite; e
- Redirecionamentos HTTP para HTTPS.
Autenticação e sessões¶
A autenticação verifica a identidade; o método de sessão o obtém e retém.
Os sistemas externos adicionam suas próprias configurações, por exemplo:
Não copie usuários ou senhas de amostra na produção. Mapeie explicitamente o acesso do administrador e teste um usuário normal e também um administrador. Consulte Autenticação.
Controle de acesso¶
As configurações em $auth controlam a visibilidade pública e o comportamento de reserva privilegiada:
$auth['deny_public_access'] = true;
$auth['only_admin_can_book'] = false;
$auth['admin_must_obey_policies'] = true;
Revise as configurações relacionadas juntos. Um calendário público, um relatório público, um quiosque e uma reserva privada podem expor informações diferentes.
Calendário e interface¶
As substituições globais comuns incluem:
$default_view = 'week';
$weekstarts = 1; // Monday
$display_mincals = true;
$show_timeline = true;
$kiosk_mode_enabled = false;
A formatação de data e hora reconhece a localidade. Copie a entrada $datetime_formats relevante completa ao substituir um formato, em vez de reconstruí-lo parcialmente.
Regras de reserva¶
Muitas regras de reserva pertencem a uma área e são administradas no banco de dados. As configurações globais podem impor limites entre áreas ou restringir capacidades.
Mantenha as substituições de política em uma seção claramente identificada e documente o motivo comercial:
// Facilities policy: every user may hold at most 20 future bookings.
$max_per_interval_global_enabled['future'] = true;
$max_per_interval_global['future'] = 20;
Teste reservas recorrentes, de vários dias e de administrador no limite da política.
E-mail¶
Escolha um método de envio e configure remetente, destinatários, eventos e conexão:
$mail_settings['admin_backend'] = 'smtp';
$mail_settings['from'] = 'mrbs@example.org';
$mail_settings['booker'] = true;
$smtp_settings['host'] = 'mail.example.org';
$smtp_settings['port'] = 587;
$smtp_settings['auth'] = true;
$smtp_settings['secure'] = 'tls';
$smtp_settings['username'] = 'mrbs@example.org';
$smtp_settings['password'] = 'replace-this-password';
Mantenha a verificação de certificado ativada. Consulte Notificações por e-mail.
Idioma e redação local¶
Defina um idioma padrão fixo somente quando a negociação do navegador for inadequada:
Substitua rótulos individuais sem editar web/lang/lang.*:
$vocab_override['en']['mrbs'] = 'Resource Booking';
$vocab_override['de']['mrbs'] = 'Ressourcenbuchung';
$vocab_override['fr']['mrbs'] = 'Réservation de ressources';
$vocab_override['es']['mrbs'] = 'Reserva de recursos';
O uso de $vocab_override preserva o texto local durante as atualizações. O fluxo de trabalho completo é abordado em Texto e traduções.
Campos personalizados¶
Colunas personalizadas do banco de dados podem ser rotuladas e moldadas por meio da configuração:
$vocab_override['en']['room.coffee_machine'] = 'Coffee machine';
$select_options['entry.catering'] = array(
'c' => 'Coffee',
's' => 'Sandwiches',
'h' => 'Hot lunch'
);
$is_mandatory_field['entry.catering'] = true;
$is_private_field['entry.refreshments'] = true;
As alterações no banco de dados devem ser concluídas primeiro. Uma coluna personalizada entry requer uma coluna idêntica em repeat. Consulte Campos personalizados para tipos suportados, exemplos de esquema, validação, privacidade, ordem de campos e testes.
Incluir segredos de outro arquivo¶
config.inc.php pode incluir outro arquivo, mas o caminho deve ser absoluto:
O arquivo incluído deve retornar ou atribuir apenas os valores esperados e ser legível pelo processo PHP. Mantenha-o fora do diretório público do servidor Web.
Variáveis de ambiente também podem ser lidas explicitamente:
Valide se existe um valor obrigatório em vez de aceitar silenciosamente um segredo vazio.
Multisite¶
Multisite usa configuração global mais uma configuração específica do site em sites/<site>/. No mínimo, todo site precisa de um prefixo de tabela isolado:
Autenticação, e-mail, tema e outras configurações podem variar de acordo com o site. Consulte Multisite.
Depuração¶
Ative o comportamento de depuração apenas temporariamente e nunca o exponha a usuários não confiáveis. A saída de depuração específica da integração pode conter dados de diretório, cabeçalhos, detalhes do servidor de correio ou informações pessoais.
Mantenha o registro de credenciais desativado:
Manutenção segura para atualização¶
Para cada atualização MRBS:
- Faça backup da configuração ativa.
- Comece com
config.inc.php-sampleda nova versão. - Compare substituições antigas com novos padrões.
- Transfira apenas configurações intencionais.
- Remova variáveis obsoletas relatadas por verificações de compatibilidade.
- Execute validação de sintaxe e testes funcionais.
Evite copiar os padrões antigos completos para a nova configuração; isso oculta novos padrões e dificulta atualizações posteriores.
Lista de verificação de validação¶
Então verifique:
- versões de aplicativos e bancos de dados em Help;
- conexão de banco de dados e prefixo de tabela;
- fuso horário da sala e comportamento de horário de verão;
- login, logout, expiração e mapeamento de administrador;
- opiniões públicas e privadas;
- criar, editar, excluir, recorrência e limites de política;
- remetente de e-mail, destinatários e TLS;
- relatórios, exportações, quiosque e multisite quando usados; e
- registros sem senhas ou dados privados.
Layout de arquivo recomendado¶
Mantenha o arquivo curto e agrupado:
<?php
declare(strict_types=1);
namespace MRBS;
// Timezone
$timezone = 'Europe/Berlin';
// Database
$dbsys = 'mysql';
// ...
// Authentication
$auth['type'] = 'db';
$auth['session'] = 'php';
// Site-specific overrides
// ...
Cada substituição não óbvia deve explicar por que a instalação precisa dela.