Страница 1 из 1

Что нужно сделать чтобы Symfony заработал с Open Server

Добавлено: 07 сен 2019, 15:48
eriskay
Здравствуйте.

Я устанавливаю Symfony через composer (composer create-project symfony/skeleton new-site.local). Перейдя на сайт, я вижу список папок и файлов, если вручную перейду на public, то вижу демо страницу symfony, если перейти на какую-то другую страницу (к примеру http://new-site.local/public/post) - будет ошибка 404 от самого сервера (не от Symfony).

Что нужно сделать, чтобы Symfony заработал с Open Server?

Пробовал настраивать через virtualhost, в файле ospanel\userdata\config\Apache-PHP-7.2-x64_server.conf, например:
<VirtualHost new-site.local:80>
	DocumentRoot "%hostdir%/public"
	ServerName "new-site.local"
</VirtualHost>
или так:
<VirtualHost new-site.local:80>
	DocumentRoot "C:\OSPanel\domains\new-site.local\public"
	ServerName "new-site.local"
	<Directory "C:\OSPanel\domains\new-site.local\public">
		Require all granted
	</Directory>
</VirtualHost>
Все равно не работает - только вместо http://new-site.local/public/ главная открывается под адресом http://new-site.local. Пробовал в настройках Open Server добавлять в ручную домен и указывать путь на public - тогда вообще не работает сайт. Что я делаю не так? Версия Open Server 5.2.2

Re: Что нужно сделать чтобы Symfony заработал с Open Server

Добавлено: 07 сен 2019, 16:23
Максим
Не понял вашей проблемы, это нормально что сайт открывается сразу из корневой папки /, но если вам нужно чтобы сайт работал из подпапки public/, или наоборот не нужно этого, то обратите внимание на настройку автопоиска корневой папки домена (Настройки - Домены) и уберите там или добавьте подпапку public (видимо убрать нужно раз вас не устраивает что public стала корневой), после чего перезапустите сервер.

Re: Что нужно сделать чтобы Symfony заработал с Open Server

Добавлено: 07 сен 2019, 23:18
eriskay
Максим писал(а): 07 сен 2019, 16:23 Не понял вашей проблемы
Сайт не работает. Ничего кроме главной. Все остальные страницы - 404 от сервера (не от Symfony).
Максим писал(а): 07 сен 2019, 16:23это нормально что сайт открывается сразу из корневой папки /, но если вам нужно чтобы сайт работал из подпапки public/, или наоборот не нужно этого, то обратите внимание на настройку автопоиска корневой папки домена (Настройки - Домены) и уберите там или добавьте подпапку public (видимо убрать нужно раз вас не устраивает что public стала корневой), после чего перезапустите сервер.
Мне как раз нужно чтобы public была корневой, что я и делаю, но вот беда в том, что в не зависимости от настроек которые устанавливаю ничего кроме главной страницы не работает. Я пробовал менять те настройки автопоиска корневой папки - не помогло.

Re: Что нужно сделать чтобы Symfony заработал с Open Server

Добавлено: 14 сен 2019, 18:42
eriskay
Обновил Open Server к последней версии - все тоже самое. Для примера скрин, слева Open Server, а справа встроенный сервер (composer require server) - там работает.
Вводя несуществующую страницу я ожидаю увидеть ошибку от Symfony (или страницу, если она существует), а не ошибку сервера.

Re: Что нужно сделать чтобы Symfony заработал с Open Server

Добавлено: 14 сен 2019, 23:53
arth
Вероятно вы забыли настроить фронт-контроллер.
Веб-серверу нужно сказать, что все запросы должен обрабатывать public/index.php
На базе апача обычно этим занимается mod_rewrite.

В symfony для этого есть готовый рецепт:
composer require symfony/apache-pack

Re: Что нужно сделать чтобы Symfony заработал с Open Server

Добавлено: 15 сен 2019, 00:19
eriskay
arth писал(а): 14 сен 2019, 23:53 Вероятно вы забыли настроить фронт-контроллер.
Веб-серверу нужно сказать, что все запросы должен обрабатывать public/index.php
На базе апача обычно этим занимается mod_rewrite.

В symfony для этого есть готовый рецепт:
composer require symfony/apache-pack
Спасибо! Выполнил composer require symfony/apache-pack и помогло.
Но я так понимаю, что лучше обойтись чем то таким в .htaccess?
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /index.php [L,QSA]