Задать вопрос
@stasbombit

Файл конфига php?

У меня проблема, делаю cms на php уже хотел её публиковать на github но тут заметил что у меня в каждом файле
...
$conn = mysqli_connect();
...

и заменять везде(<10 файлов) пользователю не удобно как мне сделать чтобы данные были на пример в config.php.
Я знаю вещь гугл но все способы от туда не совсем у меня работают(я начинающий).
  • Вопрос задан
  • 238 просмотров
Подписаться 2 Простой 5 комментариев
Пригласить эксперта
Ответы на вопрос 2
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Очень хороший вопрос, только вы путаете файл с настройками и файл первоначальной настройки приложения.
Вам нужны оба.
1. файл c настройками
Их должно быть два.
Первый файл называется config.sample.php, он содержит только один массив, который заполняется пустыми/дефолтными значениями и может содержать не только настройки БД но и содержать другие секции:
<?php
return [
  'db' => [
    'hostname' => '',
    'username' => '',
    'password' => '',
    'database' => '',
  ],
];

Этот файл добавляется в репозиторий.

Второй файл называется config.php и он создается руками каждый раз при установке CMS на новом сервере. В него пишутся актуальные настройки для каждого сервера.
Этот файл не добавляется в репозиторий (а добавляется, соответственно, в .gitignore).

2. Файл первоначальной настройки приложения.
В него идут команды, которые пишутся на любой странице: подключение к БД, старт сессии, всякие инклюды и прочее. Кроме того, в этом файле должен быть код
if (!file_exists('config.php'))
 {
     $msg = 'Создайте файл config.php на основе config.sample.php и внесите в него настройки';
     throw new RuntimeException($msg);
 }


Таким образом система будет помогать программисту, если он забыл создать config.php с актуальными для конкретного сервера настройками.

И вот этот файл, назовем его init.php, уже и подключаем во все остальные файлы.

Кстати, начиная с 8 версии РНР можно писать просто
$conn = mysqli_connect(...$config['db']);
В этом случае ключи массива $config['db'] будут использоваться в качестве имен параметров функции - очень удобно
Ответ написан
Комментировать
delphinpro
@delphinpro Куратор тега PHP
frontend developer
config.php
<?php

return [
  'db_host' => '',
  'db_name' => '',
  'db_user' => '',
  'db_pass' => '',
];


Там где он нужен

$config = include 'config.php';
$conn = mysqli_connect(
    hostname: $config['db_host'],
    username: $config['db_user'],
    password: $config['db_pass'],
    database: $config['db_name'],
);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы