Nginx + php-fpm несуществующие файлы с расширением .php

Различные вопросы по установке и настройке фреймворка, конфигурции веб-сервера и IDE.
Ответить
fredrsf
Сообщения: 20
Зарегистрирован: 2013.05.04, 22:40

Nginx + php-fpm несуществующие файлы с расширением .php

Сообщение fredrsf »

Всем привет, yii 1.1.16 использую связку php-fpm+nginx. Конфиг брал отсюда http://www.yiiframework.com/doc/guide/1 ... nfig#nginx

Проблема в том, что несуществующие файлы .php не перехватываются фрейморком. То есть получаю код 200 и грузится главная страница. Если ввести http://www.dev.localhost.ru/test/index.php от откроется главная и Yii::app()->theme->baseUrl возвращает themes/test/ и далее путь к css

Помогло добавить "try_files $uri =404;"

Код: Выделить всё

location ~ \.php {
        try_files $uri =404;

        fastcgi_split_path_info  ^(.+\.php)(.*)$;

        set $fsn /$yii_bootstrap;
        if (-f $document_root$fastcgi_script_name){
            set $fsn $fastcgi_script_name;
        }

        fastcgi_pass   127.0.0.1:9000;
        include fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fsn;

        fastcgi_param  PATH_INFO        $fastcgi_path_info;
        fastcgi_param  PATH_TRANSLATED  $document_root$fsn;
    }
 
Но при этом возвращается именно 404 от nginx, как победить такую проблему? Сделать нормальную отдачу 404 от yii
Аватара пользователя
MetalGuardian
Сообщения: 208
Зарегистрирован: 2011.03.06, 02:42
Откуда: Киев

Re: Nginx + php-fpm несуществующие файлы с расширением .php

Сообщение MetalGuardian »

какой то мудреный код у вас, есть какие то требования что бы он был так реализован?

вот мой конфиг:

Код: Выделить всё

server {
	listen [::]:80;
	listen 80;
	server_name example.com localhost;
	root /home/user/www/production/frontend/www;
	index index.php;

	access_log /var/log/nginx/example.com.access.log;
	error_log /var/log/nginx/example.com.error.log;

	charset utf-8;

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

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

Ответить