这令我感到困惑。当我访问域时,它会下载index.php
文件。当我访问domain / index.php时,它运行正常。我试图在这里和那里发表评论,只是无法修复它。这个是Zend Framework 3
。我在同一台服务器上有其他php站点。他们很好。我现在开始怀疑它的ZF3特别。
我的nginx是这样的:
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;
}
我也尝试了其他设置。它是一样的。地址栏中的网址更改为..domain/index.php
,但仍会下载index.php
文件。
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;
}
}
答案 0 :(得分:0)
下载index.php
文件意味着nginx没有使用php-fpm来处理文件。这种情况背后最常见的原因是nginx和php-fpm之间的配置错误。
清单:
php.ini
中禁用cgi.fix_pathinfo指令。它为CGI提供真正的PATH_INFO
/ PATH_TRANSLATED
支持,默认情况下启用(1)
。public
目录。在这种情况下,您可能需要将其从/var/www/www.example.com/myapplication
替换为/var/www/www.example.com/myapplication/public
location ~ \.php$ { }
块中使用正确的fastcgi_split_path_info指令,因为所有PHP请求都是通过index.php
处理的。该指令定义了一个正则表达式,用于捕获nginx $fastcgi_path_info
变量的值。例如:
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;
}
希望它有所帮助。