nginx, bí danh, php-fpm = Không tìm thấy tệp


10

Tôi đang cố gắng thiết lập nginx với DAViCal. Tuy nhiên, tôi nhận được "Tệp không tìm thấy" với "FastCGI được gửi trong stderr:" Không biết tập lệnh chính "trong nhật ký. Có vẻ như có gì đó không đúng với bí danh của tôi nhưng tôi chắc chắn không thể tìm ra.

Máy chủ ảo của tôi:

server {
listen   80; ## listen for ipv4; this line is default and implied
listen   [::]:80 default_server ipv6only=on; ## listen for ipv6

root /var/www-data;
index index.html index.htm index.shtml index.php;

# Make site accessible from http://localhost/
server_name just.a.server;

location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    try_files $uri $uri/ /index.html;
    ssi on;
    # Uncomment to enable naxsi on this location
    # include /etc/nginx/naxsi.rules
}
location ~ \.php$ {
    #try_files  $uri =404;
    include /etc/nginx/fastcgi_params;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
}

location /kalender {
    alias  /usr/share/davical/htdocs;
}

}

Fastcgi_params của tôi

fastcgi_param   QUERY_STRING        $query_string;
fastcgi_param   REQUEST_METHOD      $request_method;
fastcgi_param   CONTENT_TYPE        $content_type;
fastcgi_param   CONTENT_LENGTH      $content_length;

fastcgi_param   SCRIPT_FILENAME     $request_filename;
fastcgi_param   SCRIPT_NAME     $fastcgi_script_name;
fastcgi_param   REQUEST_URI     $request_uri;
fastcgi_param   DOCUMENT_URI        $document_uri;
fastcgi_param   DOCUMENT_ROOT       $document_root;
fastcgi_param   SERVER_PROTOCOL     $server_protocol;

fastcgi_param   GATEWAY_INTERFACE   CGI/1.1;
fastcgi_param   SERVER_SOFTWARE     nginx/$nginx_version;

fastcgi_param   REMOTE_ADDR     $remote_addr;
fastcgi_param   REMOTE_PORT     $remote_port;
fastcgi_param   SERVER_ADDR     $server_addr;
fastcgi_param   SERVER_PORT     $server_port;
fastcgi_param   SERVER_NAME     $server_name;

fastcgi_param   HTTPS           $https;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param   REDIRECT_STATUS     200;

Mong được trả lời của bạn.


htdocs là 777 btw
Martin

Câu trả lời:


20

Đã sửa nó. Hóa ra, bạn phải bao gồm bit php dưới mỗi khối vị trí.

location /calender {
    alias  /usr/share/davical/htdocs;

        location ~ \.php$ {
        fastcgi_split_path_info ^(.+?\.php)(/.*)?$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        }

}

Thật tuyệt vời, có một cách để "bao gồm" điều này nếu không bạn cần thay đổi công cụ php cho mọi vị trí!
Sandro Antonucci

Điều này sẽ không hoạt động trên mọi hệ điều hành và mọi phiên bản. tất cả phụ thuộc vào fastcgi_param SCRIPT_FILENAMEvà thực tế là nó được đặt trong fastcgi_paramshoặc fastcgi.confnhìn thấy cái nàycái này
hrvoj3e

1

Tôi thấy rằng việc di chuyển khối kết hợp php của tôi lên trên khối vị trí gốc của tôi hoạt động tốt.

location ~ \.php$ {
    include fastcgi.conf;
    fastcgi_intercept_errors on;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index  index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

location / {
    root /Users/YOU/Projects/PROJECT;
}

3
Điều này có làm việc cho một bí danh không? Điều này không trả lời câu hỏi ban đầu.
Geoffrey

1
không liên quan. nginx luôn thử khối vị trí regex trước.
Z. Zlatev 14/07/2015

@Geoffrey vâng, cái này không hoạt động cho bí danh
icc97
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.