Веб

Настройка web_root в project.ini OSPanel для папки public

Как правильно указать web_root в project.ini OSPanel (Open Server 6), чтобы запускать PHP-проект из подпапки public. Пример конфигурации, устранение ошибок Index of / и пошаговая отладка для constructor-tests.local.

Как настроить Open Server 6 (OSPanel) для запуска PHP-проекта из вложенной папки public через project.ini?

Проект расположен в C:\OSPanel\home\constructor-tests.local, где есть папка .osp с файлом project.ini. Файл index.php находится в подпапке public.

При запуске сайта отображается ‘Index of /’, но при клике на public index.php открывается корректно.

Текущий project.ini:

[constructor-tests.local]

php_engine = PHP-8.3

Пробовал добавить:

  • web_root = {base_dir}\public
  • web_root = {project_root}\public

Не работает. Как правильно указать web_root в project.ini, чтобы сайт сразу запускался с index.php из папки public?

В .osp/project.ini для OSPanel укажите web_root как относительный путь — например:

web_root = public

Тогда Open Server (OSPanel) будет брать корень сайта из подпапки public и сразу открывать ваш index.php вместо списка файлов. После правки сохраните файл без BOM, перезапустите Open Server и проверьте, что папка .osp действительно лежит в C:\OSPanel\home\constructor-tests.local.osp.


Содержание


Почему OSPanel показывает “Index of /” и как web_root решает проблему

Когда Open Server не видит, какой каталог считать публичным, он выставляет корнем сервера сам корень проекта (C:\OSPanel\home\constructor-tests.local). Браузер при этом получает список файлов — «Index of /». Ваш index.php лежит в подпапке public, поэтому по ссылке /public/index.php всё работает — просто DocumentRoot настроен неправильно.

В официальной документации указано, что параметр web_root в .osp/project.ini задаёт папку относительно корня проекта, которая будет использоваться как публичная: если указать web_root = public, сервер будет смотреть в C:\OSPanel\home<ваш-проект>\public как в DocumentRoot (документация OSPanel на GitHub). Именно поэтому записи вида web_root = {base_dir}\public или web_root = {project_root}\public часто оказываются лишними или некорректно интерпретируемыми в контексте project.ini.


Правильный синтаксис project.ini и web_root в OSPanel

Ключевые правила:

  • Файл должен лежать в папке .osp внутри корня проекта: C:\OSPanel\home\constructor-tests.local.osp\project.ini.
  • web_root указывайте как относительный путь от корня проекта. Чаще всего это просто имя папки: public.
  • Не ставьте перед путём слеши и не используйте абсолютные пути вида C:… — достаточно относительного имени.
  • Можно явно задать web_engine (Apache или Nginx) и php_engine, но web_root решает, где искать index.php.

Минимальная рабочая конфигурация:

ini
[constructor-tests.local]
php_engine = PHP-8.3
web_root = public

Если хотите указать движок явно:

ini
[constructor-tests.local]
php_engine = PHP-8.3
web_engine = Apache
web_root = public

Подробные примеры и пояснения есть в официальной документации OSPanel и в руководствах по установке Open Server 6 (ospanel.io/docs, пример установки: Unreal Stuff).


Готовый пример project.ini для вашего проекта (C:\OSPanel\home\constructor-tests.local)

Скопируйте/вставьте в C:\OSPanel\home\constructor-tests.local.osp\project.ini:

ini
[constructor-tests.local]
php_engine = PHP-8.3
web_root = public

После сохранения:

  • Перезапустите Open Server (или выполните «Перезапустить» в меню трея).
  • Откройте http://constructor-tests.local/ — должен сразу загрузиться index.php из public.

Если public находится глубже, можно указать относительный путь, например:

ini
web_root = public/subfolder

(на практике прямой указатель public обычно решает большинство задач).


Дополнительные настройки и частые ошибки

  • Неправильное расположение .osp: папка должна называться именно “.osp” и находиться в корне проекта. Проверьте, нет ли скрытого расширения (например project.ini.txt).
  • Кодировка файла: сохраняйте project.ini в UTF‑8 без BOM — BOM иногда мешает корректному парсингу.
  • Использование макросов: в project.ini web_root лучше указывать как простой относительный путь; макросы типа {base_dir} обычно не нужны в web_root.
  • Лишние пробелы и кавычки: запись должна быть без кавычек — web_root = public.
  • Документный индекс: если сервер всё ещё показывает список, проверьте, открывается ли index.php напрямую по адресу /public/index.php — если да, значит проблема именно в web_root.
  • Если вы используете HTTPS или другой порт, убедитесь, что хост резолвится корректно и Open Server управляет ним.
  • Полезные руководства и варианты конфигов можно сравнить в сообществах и блогах: php.dragomano.ru, Teletype — пример установки.

Пошаговая проверка и отладка — что делать, если не заработало

  1. Убедитесь, что файл действительно находится по пути:
  • C:\OSPanel\home\constructor-tests.local.osp\project.ini
  • Папка называется .osp (с точкой)
  1. Откройте project.ini и проверьте содержимое: должно быть как в примере выше.
  2. Сохраните файл в UTF‑8 без BOM (Notepad++ → Encoding → UTF-8 without BOM или аналог).
  3. Перезапустите Open Server (меню трея → Перезапустить все сервисы).
  4. Очистите кэш браузера (Ctrl+F5) и попробуйте:
  1. Проверьте резолв хоста: в командной строке ping constructor-tests.local должен возвращать 127.0.0.1 (Open Server обычно управляет hosts автоматически).
  2. Посмотрите логи веб‑сервера через меню Open Server — там часто видно, почему DocumentRoot не совпадает с ожиданием.
  3. Если ничего не помогает, временно создайте файл index.html в корне проекта — если при заходе по основному адресу откроется index.html, значит сервер смотрит в корень проекта, и web_root не применяется (проверьте имя .osp, права доступа, кодировку файла).

Если хочется — можно сравнить конфигурации с примерами из сообществ: abuyfile пример и amur.pro инструкция.


Источники


Заключение

Коротко: в .osp/project.ini для OSPanel указывайте web_root как относительный каталог — web_root = public — и перезапустите Open Server. Проверьте расположение .osp, кодировку project.ini и резолв хоста; в большинстве случаев это решает проблему с «Index of /». Если останутся вопросы — напишите, разберём конкретный project.ini и логи вместе.

Авторы
Проверено модерацией
Модерация
Настройка web_root в project.ini OSPanel для папки public