Symfony、nginx 和 "File not found."

标签 symfony nginx

我在 OVH 服务器上的 nginx 实例遇到问题。

当我转到我的页面时,出现错误“找不到文件。”。

/etc/nginx/sites-available/default 来自 Symfony 官方配置: http://symfony.com/doc/current/cookbook/configuration/web_server_configuration.html#nginx

server {
    server_name 51.255.193.179;
    root /root/www/harccal/web;

    location / {
        try_files $uri /app.php$is_args$args;
    }
    # DEV
    location ~ ^/(app_dev|config)\.php(/|$) {
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
    }
    # PROD
    location ~ ^/app\.php(/|$) {
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        internal;
    }

    error_log /var/log/nginx/project_error.log;
    access_log /var/log/nginx/project_access.log;
}

错误日志:

2016/01/13 23:57:04 [crit] 9372#0: *9 stat() "/root/www/harccal/web/" failed (13: Permission denied), client: 89.70.84.185, server: 51.255.193.179, request: "GET / HTTP/1.1", host: "51$
2016/01/13 23:57:04 [crit] 9372#0: *9 realpath() "/root/www/harccal/web" failed (13: Permission denied), client: 89.70.84.185, server: 51.255.193.179, request: "GET / HTTP/1.1", host: $
2016/01/13 23:57:04 [error] 9372#0: *9 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 89.70.84.185, server: 51.255.193.179, request: "$

前置:

:~/www/harccal# ls -al
total 1332
drwxr-xr-x  8 root root    4096 sty 13 22:02 .
drwxr-xr-x  3 root root    4096 sty 13 21:51 ..
drwxr-xr-x  6 root root    4096 sty 13 22:24 app
drwxr-xr-x  2 root root    4096 sty 13 22:13 bin
-rw-r--r--  1 root root    2669 sty 13 21:51 composer.json
-rw-r--r--  1 root root   67193 sty 13 22:13 composer.lock
-rwxr-xr-x  1 root root 1248055 sty 13 22:02 composer.phar
drwxr-xr-x  8 root root    4096 sty 13 21:51 .git
-rw-r--r--  1 root root      80 sty 13 21:51 .gitignore
-rw-r--r--  1 root root      85 sty 13 21:51 README.md
drwxr-xr-x  4 root root    4096 sty 13 21:51 src
drwxr-xr-x 16 root root    4096 sty 13 22:24 vendor
drwxrwxr-x  7 root root    4096 sty 13 22:03 web

/etc/nginx/nginx.conf

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
        worker_connections 768;
        # multi_accept on;
}

http {

        ##
        # Basic Settings
        ##

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        # server_tokens off;

        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ##
        # SSL Settings
        ##

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;

        ##
        # Logging Settings
        ##

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        ##
        # Gzip Settings
        ##

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ##
        # SSL Settings
        ##

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;

        ##
        # Logging Settings
        ##

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        ##
        # Gzip Settings
        ##

        gzip on;
        gzip_disable "msie6";

        # gzip_vary on;
        # gzip_proxied any;
        # gzip_comp_level 6;
        # gzip_buffers 16 8k;
        # gzip_http_version 1.1;
        # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

        ##
        # Virtual Host Configs
        ##

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}

我没有更多日志。或者我不知道什么时候找到它..

最佳答案

/root other 目录默认没有读取权限用户,这是相当合理的。最有可能的是 700权限。

接下来会发生什么 - 您的网络服务器用户 www-data尝试读取 /root/www/harccal/web 中的文件。但链中的第一个目录( /root )无法被它读取。所以它以 9 stat() "/root/www/harccal/web/" failed (13: Permission denied) 结束。

要使文件可读 - 每个父目录也必须可遍历。

解决方案:您最好将应用程序移动到网络服务器用户可以访问的另一个目录。

关于Symfony、nginx 和 "File not found.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34778703/

相关文章:

php - 在 Symfony2 中创建 Bundle 后出现 FileLoaderImportCircularReferenceException

mysql - Symfony2 中通过多个值对数据库中的记录进行排序

nginx - 我的 nginx 站点有太多事件连接正在等待

php - 如何只匹配 Doctrine 中最近更新的记录?

php - 如何发送 var 以从 symfony2 中的事件监听器查看?

nginx - 在反向代理 (Nginx) 后面运行 Sonarqube

http - 浏览器完整性检查 - NGINX

reactjs - Nginx 404 静态文件( react 应用程序)

python-3.x - 我想解决 ubuntu 服务器中的 django webserver collectstatic 错误

php - 是否可以根据查询值更改路线