Symfony Requirements Checker возвращает 404 Не найдено - PullRequest
0 голосов
/ 03 февраля 2019

Я собираюсь создать проект Symfony с docker и php-fpm, как этот учебник: Jobeet

Мой Symfony работает, и я вижу изменения, когда посещаю http://127.0.0.1 все выглядит отлично.

Но когда я хочу запустить программу проверки требований Symfony, я получаю исключение 404 Not Found от Nginx в браузере.

Я почти уверен, что это проблема с моим файлом nginx.conf.Поэтому я публикую это здесь:

server {
    listen 80 default;

    client_max_body_size 520M;

    access_log /var/log/nginx/application.access.log;

    root /application/public;

    # Deny all . files
    location / {
        try_files $uri /index.php$is_args$args;
    }

    location ~ ^/index\.php(/|$) {
        fastcgi_pass php-fpm:9000;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_index app.php;
        send_timeout 1800;
        fastcgi_read_timeout 1800;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PHP_VALUE "error_log=/var/log/nginx/application_php_errors.log";
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        include fastcgi_params;
    }

    location ~ \.php$ {
        return 404;
    }

    # Statics
    location /(bundles|media) {
        access_log off;
        expires 30d;
        try_files $uri @rewriteapp;
    }
}

Я догадывался, что это именно эта часть:

location ~ \.php$ {
    return 404;
}

Но когда я это комментирую.Symfony начинает скачивать php-файл: D

Кто-то может прочитать этот nginx.conf и сказать, что делать?

Спасибо!

1 Ответ

0 голосов
/ 03 февраля 2019

Я думаю, что проблема связана с вашим другим блоком конфигурации, содержащим вызов php-fpm:

location ~ ^/index\.php(/|$) {

Вы можете изменить его на:

location ~ ^/.+\.php(/|$) {

Это скажетnginx для передачи всего доступа к файлам php через php-fpm.Затем вы можете удалить блок, который выдает 404 при каждом вызове php-скрипта, который не является index.php

location ~ \.php$ {
    return 404;
}

Ваша версия является той, которая рекомендована Symfony, и будет следить за тем, чтобы только ваш фронт-контроллер (index.php) всегда доступен извне, что целесообразно для нового проекта Symfony.Так как вы все равно не должны выставлять check.php на работу, я бы рекомендовал сохранить ваши настройки для производственной среды.

В итоге это может быть ваш конфиг для разработки:

server {
    listen 80;

    root /var/www/html/public;

    location / {
        try_files $uri /index.php$is_args$args;
    }

    location ~ ^/.+\.php(/|$) {
        include fastcgi_params;
        fastcgi_param APP_ENV dev;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        fastcgi_pass php-fpm:9000;
    }
}
...