2016-07-30 35 views
0

Dies verblüffte mich große Zeit. Wenn ich die Domain besuche, lade die Datei index.php herunter. Wenn ich domain/index.php besuche, funktioniert es gut. Ich habe versucht, hier und da zu kommentieren, kann es einfach nicht beheben. Dieser ist Zend Framework 3. Ich habe andere PHP-Site auf dem gleichen Server. Es geht ihnen gut. Ich frage mich, ob es jetzt ZF3-Spezial ist.PHP-FPM/ZF3 herunterladen PHP-Datei beim Treffer Root-Domäne

Mein nginx ist wie folgt:

server { 
    listen  80; 
    server_name xxx.xxx.com; 
    index index.php index.html; 
    root   /data/www/xxx/public; 

    location ~ \.php$ { 
    fastcgi_pass 127.0.0.1:9000; 
    fastcgi_index index.php; 
    include  fastcgi_params; 
    fastcgi_param SCRIPT_FILENAME /data/www/xxx/public/index.php; 
    } 

    access_log logs/worth.jusfeel.cn.log main; 
} 

ich auch andere Einstellungen ausprobiert. Es ist das gleiche. Die URL in der Adressleiste ändert sich in ..domain/index.php, aber laden Sie die Datei index.php herunter.

server { 
    listen  80; 
    server_name www.example.com; 
    root  /var/www/www.example.com/myapplication; 
    index  index.html index.htm index.php; 

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

    location ~ \.php$ { 
    fastcgi_pass 127.0.0.1:9000; 
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    include  fastcgi_params; 
    } 
} 

Antwort

0

Herunterladen der Datei index.php bedeutet, dass nginx nicht php-fpm Datei zu verarbeiten hat verwenden. Der häufigste Grund für diese Situation ist eine Fehlkonfiguration zwischen nginx und php-fpm.

Prüfliste:

  1. Stellen Sie sicher, dass Sie nicht die cgi.fix_pathinfo Richtlinie in php.ini deaktiviert hat. Es bietet echte PATH_INFO/PATH_TRANSLATED Unterstützung für CGI und es ist (1) standardmäßig aktiviert. Stellen Sie sicher, dass das Stammverzeichnis Ihres virtuellen Hosts auf das Verzeichnis public Ihrer ZF3-Anwendung verweist. In diesem Fall können Sie es /var/www/www.example.com/myapplication-/var/www/www.example.com/myapplication/public
  2. Wichtigster Teil ersetzen müssen, ist Sie fastcgi_split_path_info Richtlinie in location ~ \.php$ { } Block, da alle PHP-Anfragen verarbeitet durch index.php eine richtige benötigen. Diese Direktive definiert einen regulären Ausdruck, der einen Wert für die Variable nginx $fastcgi_path_info erfasst.

Zum Beispiel:

location ~ \.php$ { 
    fastcgi_pass   127.0.0.1:9000; 
    fastcgi_split_path_info ^(.+.php)(/.+)$; 
    fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    include     fastcgi_params; 
} 

Hoffe, es hilft.