Я просто пытаюсь в первый раз развернуть проект Symfony (3.3.5) в продакшене, и у меня небольшие проблемы.
MySQL установлен и запущен на сервере, Symfony может подключиться к нему. Apache2 и PHP тоже работают. (И простые файлы PHP, такие как echo "hello world"
работают как положено).
У меня два момента:
Во-первых: когда я пытаюсь получить доступ http://example.com/web/app.php "страница не работает" (это сообщение об ошибке Chrome) с кодом ошибки 500. То же самое для любого другого URL-адреса, например http://example.com/web/app.php/login.
Во-вторых: почему мне все еще нужно использовать маршруты с /web/app.php
(если я его не использую, сервер показывает мне обозреватель каталогов веб-сервера), тогда как мой файл .htaccess выглядит так:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ web/$1 [QSA,L]
</IfModule>
И мой /etc/apache2/sites-available/example.com.conf
файл:
<VirtualHost *:80>
ServerAdmin mymail@gmail.com
ServerName example.com
ServerAlias dev.gepacte.com
DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory "/var/www/example.com/public_html">
<IfModule sapi_apache2.c>
php_admin_flag engine on
</IfModule>
<IfModule mod_php5.c>
php_admin_flag engine on
</IfModule>
#If one of the following lines is uncommented, the apache2 serve won't restart.
#DirectoryIndex app.php
#Options -Indexes
#AllowOverride All
#Allow from All
</Directory>
</VirtualHost>
Конечно, мой проект Symfony находится в /var/www/example.com/public_html
РЕДАКТИРОВАТЬ:
Мой /var/log/apache2/access.log
файл:
80.215.95.207 - - [07/Nov/2017:18:22:44 +0100] "GET /web/app.php/ HTTP/1.1" 500 716 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
И /var/log/apache2/error.log
файл:
[Tue Nov 07 18:24:20.542808 2017] [mpm_prefork:notice] [pid 17564] AH00169: caught SIGTERM, shutting down
[Tue Nov 07 18:24:20.723226 2017] [mpm_prefork:notice] [pid 22562] AH00163: Apache/2.4.25 (Debian) configured -- resuming normal operations
[Tue Nov 07 18:24:20.723301 2017] [core:notice] [pid 22562] AH00094: Command line: '/usr/sbin/apache2'
Я предполагаю, что у вас есть apache 2.4 и apche, обслуживаемые пользователем www-data.
Установить права на запись в папке var
Убедитесь, что у вас есть необходимые разрешения
chown -R www-data:www-data /var/www/example.com/public_html/var
chmod -R 777 /var/www/example.com/public_html/var
rm -rf /var/www/example.com/public_html/var/cache/{dev|prod}
rm -rf /var/www/example.com/public_html/var/logs/*
Настройка Apache
Вы должны открыть только веб-папку, а не весь проект.
<VirtualHost *:80>
ServerAdmin mymail@gmail.com
ServerName example.com
ServerAlias dev.gepacte.com
DocumentRoot /var/www/example.com/public_html/web
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory "/var/www/example.com/public_html/web">
<IfModule sapi_apache2.c>
php_admin_flag engine on
</IfModule>
<IfModule mod_php5.c>
php_admin_flag engine on
</IfModule>
AllowOverride All
Options -Indexes FollowSymLinks
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Удали это
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ web/$1 [QSA,L]
</IfModule>
Первые несколько запросов завершатся ошибкой, так как symfony будет перестраивать кеш, подождите, через несколько минут он должен заработать.
Проверьте свои производственные журналы Symfony после.