Get Social

Hestia CP + Nginx + Php-fpm – исполнение php кода в html

Конечно непонятно зачем и кому это нужно, но бывает, что в статических страничках html нужно исполнять код php (например, мне пришлось столкнуться с такой задачей).
По умолчанию в панели Hestia CP + Nginx + Php-fpm эта функция не работает.

Решение.

Нужно править стандартные шаблоны nginx php-fpm. Для этого заходим в папку шаблонов и делаем копии, например, шаблона default:

cd /usr/local/hestia/data/templates/web/nginx/php-fpm
cp default.tpl default-html2php.tpl
cp default.stpl default-html2php.stpl

затем находим блок, где описывается php и добавляем html (или меняем):

              location ~ [^/]\.php|html(/|$) {
                        try_files $uri =404;
                        include /etc/nginx/fastcgi_params;
                        fastcgi_index index.html;

Затем в панели Hestia переключаем конфиг Nginx (по кнопке Advanced Options и дальше Web Template NGINX)

Тут скорее всего сайт перестанет открываться вообще, напишет Access Denied и в логах [domain].access.log мы увидим код 403. Но вот в логах [domain].error.log появится ошибка вроде:
([domain] – ваш домен сайта)

FastCGI sent in stderr: “Access to the script ‘index.html’ has been denied (see security.limit_extension

Это уже более информативно. Исправить это можно так:

Правим

nano /etc/php/8.2/fpm/pool.d/[domain].com.conf

добавим строчку:

security.limit_extensions = .php .html

перезапускаем php-fpm

/etc/init.d/php8.2-fpm restart

(вместо 8.2 используйте свою версию php)

! не рекомендую править какие-либо общие конфиги, для безопасности

Post a comment