config.inc.php 심층¶
web/config.inc.php는 각 MRBS 설치에서 관리하는 설정 파일입니다. 사이트별 동작과 보통 비밀 정보도 포함하므로, 애플리케이션 소스가 아니라 운영 설정으로 취급하세요.
파일 만들기¶
MRBS는 web/config.inc.php-sample를 배송하지만 의도적으로 활성 config.inc.php을 배송하지 않습니다.
동일한 MRBS 릴리스의 샘플로 시작하세요. 오래된 샘플을 그대로 옮기지 마십시오.
설정이 로드되는 방식¶
공유 부트스트랩은 다음 순서로 설정을 로드합니다.
systemdefaults.inc.phpareadefaults.inc.phpconfig.inc.phpsite_config.inc- 내부 검증 및 호환성 처리
나중 할당이 이전 할당보다 우선합니다. 이것이 짧은 config.inc.php가 릴리스 파일을 수정하지 않고도 애플리케이션 기본값을 대체할 수 있는 이유입니다.
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
데이터베이스에 이미 저장된 영역 설정은 회의실 화면에서 편집합니다. areadefaults.inc.php 또는 config.inc.php의 값을 바꿔도 기존 영역은 다시 기록되지 않습니다.
PHP 구문¶
설정 파일은 실행 가능한 PHP 코드입니다. 모든 문장은 세미콜론으로 끝나며, 문자열에는 작은따옴표나 큰따옴표를 사용할 수 있습니다.
$timezone = 'Europe/Berlin';
$default_view = "week";
$kiosk_mode_enabled = false;
$search["count"] = 30;
문자열이 아닌 실제 PHP 부울을 사용하세요.
$mail_settings['disabled'] = false; // Correct
$mail_settings['disabled'] = "false"; // Wrong: this is a non-empty string
배열은 지원되는 PHP 구문을 사용할 수 있습니다.
닫는 ?> 태그를 추가하지 마세요. 실수로 출력이 발생하고 헤더나 쿠키가 중단될 수 있습니다.
최소 설정¶
새 사이트에는 일반적으로 회의실 시간대와 데이터베이스 연결이 필요합니다.
$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;
회의실이 위치한 시간대를 사용하세요. 서버 시간대와 다를 수 있습니다.
데이터베이스 설정¶
데이터베이스를 선택하세요¶
또는:
연결 동작¶
localhost 드라이버에 따라 Unix 소켓을 선택할 수 있습니다. 127.0.0.1를 사용하여 MySQL에 대해 TCP를 강제 적용합니다. 비표준 포트는 별도로 지정할 수 있습니다.
PostgreSQL 여러 스키마가 있는 설치에서는 다음을 설정할 수 있습니다.
테이블 접두사는 설치된 스키마와 일치해야 합니다.
영구 연결은 기본적으로 비활성화되어 있습니다. 실제 요구 사항을 측정하고 트랜잭션 및 잠금과의 상호 작용을 이해한 후에만 활성화하십시오.
URL 및 역방향 프록시 설정¶
MRBS는 일반적으로 요청에서 URL을 파생합니다. 역방향 프록시, 경로 접두사 또는 비정상적인 가상 호스트 설정으로 인해 이를 신뢰할 수 없게 되면 systemdefaults.inc.php에서 관련 URL 설정을 복사하고 명시적인 공개 기반을 설정하세요.
외부 URL은 사용자가 보는 스키마와 호스트를 사용해야 합니다. 신뢰할 수 있는 체계와 호스트 정보를 전달하고 신뢰할 수 없는 호스트 헤더를 거부하도록 프록시를 설정합니다.
URL 동작을 변경한 후 다음을 테스트하세요.
- 로그인 후 리디렉션.
- 이메일의 링크.
- iCalendar URL.
- 키오스크 종료 링크.
- 다중 사이트 링크.
- HTTP-to-HTTPS 리디렉션.
인증 및 세션¶
인증은 신원을 확인합니다. 세션 메소드는 이를 획득하고 유지합니다.
외부 시스템은 다음과 같은 자체 설정을 추가합니다.
샘플 사용자 또는 비밀번호를 프로덕션에 복사하지 마십시오. 관리자 액세스를 명시적으로 매핑하고 일반 사용자와 관리자를 테스트합니다. 입증를 참조하세요.
접근 통제¶
$auth 아래의 설정은 공개 공개 및 특별 예약 동작을 제어합니다.
$auth['deny_public_access'] = true;
$auth['only_admin_can_book'] = false;
$auth['admin_must_obey_policies'] = true;
관련 설정을 함께 검토하세요. 공개 캘린더, 공개 보고서, 키오스크, 비공개 예약에서는 서로 다른 정보가 노출될 수 있습니다.
달력 및 인터페이스¶
일반적인 전역 재정의는 다음과 같습니다.
$default_view = 'week';
$weekstarts = 1; // Monday
$display_mincals = true;
$show_timeline = true;
$kiosk_mode_enabled = false;
날짜 및 시간 형식은 로케일을 인식합니다. 형식을 부분적으로 재설정하는 대신 형식을 재정의할 때 전체 관련 $datetime_formats 항목을 복사하세요.
예약 규칙¶
많은 예약 규칙은 하나의 영역에 속하며 데이터베이스에서 관리됩니다. 전역 설정은 영역 전체에 제한을 두거나 기능을 제한할 수 있습니다.
명확하게 라벨이 지정된 섹션에 정책 재정의를 보관하고 비즈니스 이유를 문서화하세요.
// Facilities policy: every user may hold at most 20 future bookings.
$max_per_interval_global_enabled['future'] = true;
$max_per_interval_global['future'] = 20;
정책 경계에서 반복, 다중 날짜 및 관리자 예약을 테스트합니다.
이메일¶
전송 방식을 선택하고 발신자, 수신자, 알림 이벤트 및 연결 보안을 설정합니다.
$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';
인증서 확인을 활성화된 상태로 유지하세요. 이메일 알림를 참조하세요.
언어 및 현지 표현¶
브라우저 협상이 적합하지 않은 경우에만 고정 기본 언어를 설정하십시오.
편집하지 않고 개별 라벨을 재정의합니다 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';
$vocab_override를 사용하면 업그레이드 중에 현지 표현이 유지됩니다. 전체 작업 흐름은 텍스트 및 번역에 설명되어 있습니다.
사용자 정의 필드¶
사용자 정의 데이터베이스 열은 설정을 통해 레이블을 지정하고 모양을 지정할 수 있습니다.
$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;
데이터베이스 변경이 먼저 완료되어야 합니다. entry 맞춤 열에는 repeat에 동일한 열이 필요합니다. 지원되는 유형, 스키마 예, 유효성 검사, 개인 정보 보호, 필드 순서 및 테스트는 사용자 정의 필드를 참조하세요.
다른 파일의 비밀 포함¶
config.inc.php에는 다른 파일을 포함할 수 있지만 경로는 절대 경로여야 합니다.
포함하는 파일은 필요한 값만 반환하거나 할당해야 하며 PHP 프로세스가 읽을 수 있어야 합니다. 웹 서버의 공개 디렉터리 밖에 보관하세요.
환경 변수를 명시적으로 읽을 수도 있습니다.
빈 비밀을 자동으로 수락하는 대신 필요한 값이 존재하는지 확인하세요.
멀티사이트¶
멀티사이트는 전역 설정과 sites/<site>/ 아래의 사이트별 설정을 사용합니다. 최소한 모든 사이트에는 격리된 테이블 접두사가 필요합니다.
인증, 메일, 테마 등 기타 설정은 사이트별로 다를 수 있습니다. 멀티사이트를 참조하세요.
디버깅¶
디버그 동작을 일시적으로만 활성화하고 신뢰할 수 없는 사용자에게 노출하지 마십시오. 통합 관련 디버그 출력에는 디렉터리 데이터, 헤더, 메일 서버 세부 정보 또는 개인 정보가 포함될 수 있습니다.
자격 증명 로깅을 비활성화 상태로 유지합니다.
업그레이드가 안전한 유지 관리¶
모든 MRBS 업그레이드마다:
- 활성 설정을 백업합니다.
- 새 릴리스의
config.inc.php-sample부터 시작하세요. - 이전 재정의를 새 기본값과 비교합니다.
- 의도적인 설정만 전송합니다.
- 호환성 검사를 통해 보고된 사용되지 않는 변수를 제거합니다.
- 구문 유효성 검사 및 기능 테스트를 실행합니다.
전체 이전 기본값을 새 설정에 복사하지 마십시오. 이는 새로운 기본값을 숨기고 나중에 업그레이드하기 어렵게 만듭니다.
검증 체크리스트¶
그런 다음 다음을 확인하십시오.
- 애플리케이션 및 데이터베이스 버전은 Help에 있습니다.
- 데이터베이스 연결 및 테이블 접두사.
- 실내 시간대 및 일광 절약 시간제 동작.
- 로그인, 로그아웃, 만료 및 관리자 매핑.
- 공개 및 비공개 견해.
- 생성, 편집, 삭제, 반복 및 정책 경계.
- 이메일 발신자, 수신자 및 TLS.
- 보고서, 내보내기, 키오스크 및 다중 사이트(사용되는 경우) 그리고
- 비밀번호나 개인 데이터 없이 로그를 기록합니다.
권장 파일 레이아웃¶
파일을 짧게 그룹화하여 유지하세요.
<?php
declare(strict_types=1);
namespace MRBS;
// Timezone
$timezone = 'Europe/Berlin';
// Database
$dbsys = 'mysql';
// ...
// Authentication
$auth['type'] = 'db';
$auth['session'] = 'php';
// Site-specific overrides
// ...
명확하지 않은 모든 재정의는 설치에 필요한 이유를 설명해야 합니다.