Nginx & PHP-FPM - .php Файл, не найденный - не Может выяснить почему

Я рекомендовал бы читать некоторые статьи о howtoforge.

Их легко читать и понять для новичков.

http://www.howtoforge.com/perfect-server-ubuntu8.04-lts

Но необходимо начать читать о безопасности - это не самая легкая вещь иметь выполнение защищенного сервера... Необходимо понять, о каких угрозах необходимо заботиться.

4
задан 28 July 2012 в 19:27
3 ответа

Есть ли что-нибудь в ваших журналах доступа / ошибок?

Кроме того, почему вы включаете fastcgi_params и тогда в значительной степени определите их все?

Вот как выглядит мой блок местоположения в nginx с php-fpm:

    location ~ \.php$ {

            try_files $uri =404;
            fastcgi_intercept_errors on;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /path/to/site.com/public$fastcgi_script_name$
            fastcgi_param  PATH_INFO $fastcgi_script_name;
            include fastcgi_params;
    }

Попробуйте переместить fastcgi_pass вверх, вверх.

1
ответ дан 3 December 2019 в 04:13

Я полагаю, вы не можете заставить nginx отображать ваши .php файлы в вашем браузере.

Я вижу много вещей, которые вам просто не нужны, чтобы получить php для работы. Насколько я понимаю и читал, вы можете передать только один параметр fastcgi_param. Насколько мне известно, именно так работает FastCGI. Если у вас более одного параметра fastcgi_param, nginx выбирает первый в строке. Попробуйте указать только "fastcgi_pass 127.0.0.1:9001;" в качестве параметра fastcgi и посмотрите, что произойдет.

Вы можете узнать больше о fastcgi на этой странице http://michaelshadle.com/2011/02/11/setting-php-ini-parameters-from-nginx

-1
ответ дан 3 December 2019 в 04:13

Проблема в том, что вы помещаете php-fpm в chroot-тюрьму, но nginx передает полный путь SCRIPT_FILENAME скрипту PHP.

В вашей конфигурации nginx у вас есть ( среди прочего):

root /var/www/domain.com/wwwroot;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

Для запроса /index.php его переводят в /var/www/domain.com/wwwroot/index.php . Но вы поместили php-fpm в chroot jail:

chroot = /var/www/domain.com/wwwroot/

Итак, php-fpm видит файл по адресу /index.php , а не /var/www/domain.com/wwwroot/index .php .

Следовательно, вы должны настроить путь для SCRIPT_FILENAME так, чтобы он соответствовал тому, что php-fpm будет видеть в chroot. Для этого удалите $ document_root .

fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
1
ответ дан 3 December 2019 в 04:13

Теги

Похожие вопросы