【问题标题】:Symfony Requirements Checker returns 404 Not foundSymfony 需求检查器返回 404 Not found
【发布时间】:2019-06-27 11:45:35
【问题描述】:

我即将使用 docker 和 php-fpm 创建一个 Symfony 项目,如本教程:Jobeet

我的 Symfony 正在运行,当我访问 http://127.0.0.1 时我可以看到变化 一切看起来都很好。

但是当我想运行 Symfony 需求检查器时,我在浏览器中从 Nginx 收到 404 Not Found 异常。

我很确定这是我的 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 文件。

这个nginx.conf可能有什么问题?

【问题讨论】:

    标签: symfony docker nginx nginx-config


    【解决方案1】:

    我认为问题与您的其他包含对 php-fpm 的调用的配置块有关:

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

    你可以改成:

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

    这将告诉 nginx 通过 php-fpm 传递对 php 文件的所有访问权限。然后,您可以删除在调用不是 index.php 的 php 脚本时引发 404 的块

    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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-16
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 2014-09-16
      • 2021-02-07
      • 2020-03-16
      相关资源
      最近更新 更多