Настройка 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}\publicweb_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 решает проблему
- Правильный синтаксис project.ini и web_root в OSPanel
- Готовый пример project.ini для вашего проекта
- Дополнительные настройки и частые ошибки
- Пошаговая проверка и отладка — что делать, если не заработало
- Источники
- Заключение
Почему 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.
Минимальная рабочая конфигурация:
[constructor-tests.local]
php_engine = PHP-8.3
web_root = public
Если хотите указать движок явно:
[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:
[constructor-tests.local]
php_engine = PHP-8.3
web_root = public
После сохранения:
- Перезапустите Open Server (или выполните «Перезапустить» в меню трея).
- Откройте http://constructor-tests.local/ — должен сразу загрузиться index.php из public.
Если public находится глубже, можно указать относительный путь, например:
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 — пример установки.
Пошаговая проверка и отладка — что делать, если не заработало
- Убедитесь, что файл действительно находится по пути:
- C:\OSPanel\home\constructor-tests.local.osp\project.ini
- Папка называется .osp (с точкой)
- Откройте project.ini и проверьте содержимое: должно быть как в примере выше.
- Сохраните файл в UTF‑8 без BOM (Notepad++ → Encoding → UTF-8 without BOM или аналог).
- Перезапустите Open Server (меню трея → Перезапустить все сервисы).
- Очистите кэш браузера (Ctrl+F5) и попробуйте:
- http://constructor-tests.local/ — ожидается index.php из public
- http://constructor-tests.local/public/index.php — если открылся, значит веб‑корень неверно настроен
- Проверьте резолв хоста: в командной строке ping constructor-tests.local должен возвращать 127.0.0.1 (Open Server обычно управляет hosts автоматически).
- Посмотрите логи веб‑сервера через меню Open Server — там часто видно, почему DocumentRoot не совпадает с ожиданием.
- Если ничего не помогает, временно создайте файл index.html в корне проекта — если при заходе по основному адресу откроется index.html, значит сервер смотрит в корень проекта, и web_root не применяется (проверьте имя .osp, права доступа, кодировку файла).
Если хочется — можно сравнить конфигурации с примерами из сообществ: abuyfile пример и amur.pro инструкция.
Источники
- Установка и настройка OSPanel 6 - Unreal Stuff
- Возможности Open Server Panel 6 - PHP и все-все-все
- Документация / Open Server Panel
- Документация · OSPanel/OpenServerPanel Wiki · GitHub
- Установка Open Server Panel 6.3.5 и инструкция — Teletype
- Руководство по установке Open Server 6 (abuyfile)
- Установка и настройка Open Server Panel 6 (amur.pro)
Заключение
Коротко: в .osp/project.ini для OSPanel указывайте web_root как относительный каталог — web_root = public — и перезапустите Open Server. Проверьте расположение .osp, кодировку project.ini и резолв хоста; в большинстве случаев это решает проблему с «Index of /». Если останутся вопросы — напишите, разберём конкретный project.ini и логи вместе.