Назад | Перейти на главную страницу

Файлы PHP Symfony не работают на prod server

Я просто пытаюсь в первый раз развернуть проект 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 после.