nginx — PHP-FPM / ZF3 загружает php файл при попадании в корневой домен

Это сбило меня с толку. Когда я захожу на домен, он загружает index.php файл. Когда я захожу на домен / 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;
}

Я пробовал и другие настройки. Это то же самое. URL в адресной строке изменится на ..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

Решение

Загрузка index.php file означает, что nginx не использует php-fpm для обработки файла. Наиболее распространенная причина этой ситуации — неправильная настройка между nginx и php-fpm.

Контрольный список:

  1. Убедитесь, что вы не отключили cgi.fix_pathinfo директива в php.ini, Это обеспечивает реальный PATH_INFO/PATH_TRANSLATED поддержка CGI и она включена (1) по умолчанию.
  2. Убедитесь, что корень вашего виртуального хоста указывает на public каталог вашего приложения ZF3. В этом случае вам может понадобиться заменить его /var/www/www.example.com/myapplication в /var/www/www.example.com/myapplication/public
  3. Самая важная часть, вам нужно правильное fastcgi_split_path_info директива в location ~ \.php$ { } блокировать, так как все запросы 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;
}

Надеюсь, поможет.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]