#php #symfony #web-deployment
#php #symfony #веб-развертывание
Вопрос:
Я разработал сайт с помощью sympfony / phpp, который хочу развернуть на локальном сервере.
После разработки на моем собственном компьютере (где он работает хорошо) я разместил проект на локальном сервере с apache, php 7.3.x, composer 2.0.0 под ОС debian 10
Вся передача проекта с моего компьютера на сервер и настройка полностью завершены. Имя папки проекта — si2a. Именно в каталоге /var/www я устанавливаю права доступа к этому каталогу с помощью ACL, следуя руководству symfony doc.
Я установил для файла конфигурации сайта имя si2afama.conf. Это последнее находится в каталоге /etc/apache2/sites-доступно. После настройки я активирую сайт, перезагружаю apache и очищаю кеш. Вот файл si2afama.conf, содержащий :
<VirtualHost *:80>
ServerName si2afama
# ServerAlias www.si2afama.com
DocumentRoot /var/www/si2a/public
DirectoryIndex /index.php
<Directory /var/www/si2a/public>
AllowOverride All
Require all granted
Allow from All
FallbackResource /index.php
</Directory>
<Directory /var/www/si2a/public/bundles>
FallbackResource disabled
</Directory>
ErrorLog /var/log/apache2/si2a_error.log
CustomLog /var/log/apache2/si2a_access.log combined
</VirtualHost>
Когда я пытаюсь получить доступ к сайту, я обнаружил эту ошибку :
Маршрут не найден для «GET / si2afama»
Поскольку это иссус маршрутизации, вот некоторые файлы, которые содержат :
si2a/конфигурация/пакеты/маршрутизация.yaml
framework:
router:
utf8: true
si2a/config.routes.yaml
index:
path: /
controller: AppControllerDefaultController::index
si2a/public/index.php .
<?php
use AppKernel;
use SymfonyComponentErrorHandlerDebug;
use SymfonyComponentHttpFoundationRequest;
require dirname(__DIR__).'/config/bootstrap.php';
if ($_SERVER['APP_DEBUG']) {
umask(0000);
Debug::enable();
}
if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? $_ENV['TRUSTED_PROXIES'] ?? false) {
Request::setTrustedProxies(explode(',', $trustedProxies), Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST);
}
if ($trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? $_ENV['TRUSTED_HOSTS'] ?? false) {
Request::setTrustedHosts([$trustedHosts]);
}
$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);
Я действительно не знаю, что делать, чтобы исправить проблему.
Может кто-нибудь мне помочь, пожалуйста. Спасибо.
Комментарии:
1. Я не вижу никакого маршрута с
si2afama
определенным именем.2. Да, @Lounis.
si2afama
это имя имени файла vhost и имени сервера в этом файле. Если я понимаю, указание DocumentRoot и DirectoryIndex перенаправляют наroute
индекс. Верно?3. Если нет, куда я должен добавить допустимый маршрут
si2afama
?
Ответ №1:
Ваш виртуальный хостинг связан с вашим доменным именем и каталогом исходного кода, если вам нужно имя маршрута, подобное si2afama
для вашего приложения, вы должны добавить его в symfony routes.
# si2a/config.routes.yaml
index:
path: /
controller: AppControllerDefaultController::index
si2afama:
path: /si2afama
controller: AppControllerDefaultController::nameActionFromController
Комментарии:
1. Большое тебе спасибо @Lounis. Это исправляет проблему. Но означает ли это изменение
# si2a/config/routes.yaml
, что каждый раз, когда я меняю свой #ServerName на vhost ,si2afama.tld
например, я должен адаптировать этот файл yaml и добавить соответствующий маршрут в свой исходный код?2.
ServerName
это имя хоста вашего приложения,si2afama
это только маршрут, пример с этим URL:http://si2afama.tld/si2afama
, эта частьhttp://si2afama.tld
— это имя хоста, которое вы делаете таким, каким хотите, оно связано с вашим сервером (здесь apache),/si2afama
это маршрут (или путь / uri), который связан с вашим приложением symfony. Вам не нужно адаптировать маршруты symfony, если вы меняете доменное имя.
Ответ №2:
попробуйте установить этот пакет composer, требующий symfony / apache-pack, он создаст файл .htaccess, который решит вашу проблему
Комментарии:
1. …:/var/www/si2a$ composer требуется symfony/ apache-pack .. Я устанавливаю этот пакет , как вы можете видеть в строке comman. Файл .htaccess был создан в каталоге /public . Проблема все еще здесь после того, как я попробовал доступ
2. проверьте, включен ли модуль mod_rewrite для Apache
3. Это с самого начала. Я включил его с помощью перезаписи a2enmod . Перезапись модуля уже включена , когда я проверяю
4. Любое другое решение? Я действительно не понимаю, в чем проблема.