nginx, alias, php-fpm = Fichier introuvable


10

J'essaie de configurer nginx avec DAViCal. Cependant, je reçois un "Fichier introuvable" avec un "FastCGI envoyé dans stderr:" Script principal inconnu "dans le journal. Il semble que quelque chose ne va pas avec mon alias mais je ne peux pas le comprendre.

Mon hôte virtuel:

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

}

Mes fastcgi_params

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;

Dans l'attente de vos réponses.


htdocs est de 777 btw
Martin

Réponses:


20

A corrigé. Il s'avère que vous devez inclure le bit php sous chaque bloc d'emplacement.

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

}

Génial, il y a un moyen de "l'inclure" sinon vous devez changer les trucs php pour chaque emplacement!
Sandro Antonucci

cela ne fonctionnera pas sur tous les OS et toutes les versions. tout dépend fastcgi_param SCRIPT_FILENAMEet le fait est-il réglé fastcgi_paramsou fastcgi.confvoir ceci et cela
hrvoj3e

1

J'ai trouvé que déplacer mon bloc de correspondance php au-dessus de mon bloc d'emplacement racine fonctionnait très bien.

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
Est-ce que cela fonctionne pour un alias? Cela ne répond pas à la question d'origine.
Geoffrey

1
non pertinent. nginx essaie toujours les blocs d'emplacement regex en premier.
Z. Zlatev

@Geoffrey oui cela fonctionne pour alias
icc97
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.