Управление конфигурацией веб-сайта с помощью CMS

#database #content-management-system #configuration-files

#База данных #система управления контентом #конфигурация-файлы

Вопрос:

Я читал вопросы по Stack Overflow, очень похожие на этот вопрос, но не совсем одинаковые.

Допустим, у меня было следующее config.inc.php файл включен на каждую страницу моего веб-сайта:

 <?php

    $site_name = 'Acme Inc.';

    $authenticate_with_ldap = true;

    $ldap_host = 'ldap.example.com';
    $ldap_port = 389;
    $ldap_rdn = 'ldap-user';
    $ldap_password = 'ldap-pass';
    $ldap_dn = 'ou=example,dc=example,dc=com';

    $smtp_username = 'smtp-user';
    $smtp_password = 'smtp-pass';

    $recaptcha_publickey = 'my-recaptcha-publickey';
    $recaptcha_privatekey = 'my-recaptcha-privatekey';

?>
  

Примечание: Я решил сохранить конфигурацию веб-сайта в файле, а не в базе данных, потому что информация используется по всему веб-сайту, и потребовалось бы намного больше кода и, я предполагаю, намного больше накладных расходов, чтобы постоянно запрашивать у базы данных одну и ту же информацию.

Теперь предположим, что администратор веб-сайта относится к тому типу людей, которые предпочли бы редактировать вышеуказанную информацию с помощью CMS, а не заходить и редактировать файл вручную. Я боюсь, что когда администратор веб-сайта нажимает кнопку «Обновить» и PHP-скрипт переходит к file_put_contents функции, которая перезаписывает config.inc.php файл, что-то может пойти не так и либо повредить файл, либо сделать его непригодным для использования из-за синтаксической ошибки или чего-то еще.

Является ли это разумным беспокойством? Должен ли я сказать администратору веб-сайта, что он должен просто разобраться и отредактировать файл вручную? Должен ли я вместо этого хранить информацию в базе данных? Или я должен хранить информацию в обоих местах, чтобы, если файл будет поврежден, его можно было восстановить, используя информацию в базе данных?

Ответ №1:

Если вы сохраните эту информацию в БД в виде одной строки данных, не будет ли она в любом случае кэшироваться?