Из-за чего файл PHP в подпапке скачивается а не выполняется(NGINX)?
Ссылка скопирована
По вводным: пытаюсь сделать так, чтобы файл `/install/app.php` выполнялся, а он скачивается.
По вводным: если важно: сайт на phpBB.
Текущий конфиг NGINX
server { server_name cait.ru www.cait.ru; listen 185.135.80.100; rewrite ^ https://$server_name$request_uri? permanent; } server { server_name cait.ru www.cait.ru; listen 185.135.80.100:443 ssl http2; ssl_certificate /home/ssss/domains/cait.ru/ssl.cert; ssl_certificate_key /home/ssss/domains/cait.ru/ssl.key; root /home/ssss/domains/cait.ru/public_html; index index.html index.htm index.php; access_log /var/log/nginx/cait.ru_access_log; error_log /var/log/nginx/cait.ru_error_log; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_FILENAME /home/ssss/domains/cait.ru/public_html$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT /home/ssss/domains/cait.ru/public_html; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; fastcgi_param HTTPS $https; set $_PHP_COKET unix:/var/run/php8.4-fpm-cait.ru.sock; # Global / — для всего сайта, кроме /install/ (из-за ^~) location / { try_files $uri $uri/ /index.php?q=$uri&$args; } # Global PHP handler (не для /install/, оно в ^~) location ~ \.php$ { try_files $uri =404; fastcgi_pass $_PHP_COKET; # Добавьте аналогичные fastcgi_param, если в location_php.conf их нет } location @php_ZAnyCK { try_files $uri =404; fastcgi_pass $_PHP_COKET; } rewrite ^/wp-content/(.*\.jpg)?$ /wp-content/$1 last; rewrite ^(.*?)(cache|inc|jscript|lofiversion|nunu|skin_acp|style_emoticons|style_images|support|uploads)(.*\.PNG)?$ /C/$1$2$3 last; # nginx configuration #location / {if (!-e $request_filename){rewrite ^(.*)$ /app.php break;}} #location /install/ {if (!-e $request_filename){rewrite ^(.*)$ /app.php break;}} location /config.php {fastcgi_pass $_PHP_COKET;} location /common.php {fastcgi_pass $_PHP_COKET;} location ^~ /viewtopic.php {fastcgi_pass $_PHP_COKET;} location ^~ /viewforum.php {fastcgi_pass $_PHP_COKET;} location ^~ /ucp.php {fastcgi_pass $_PHP_COKET;} location ^~ /style.php {fastcgi_pass $_PHP_COKET;} location ^~ /sitemap.php {fastcgi_pass $_PHP_COKET;} location ^~ /search.php {fastcgi_pass $_PHP_COKET;} location ^~ /report.php {fastcgi_pass $_PHP_COKET;} location ^~ /posting.php {fastcgi_pass $_PHP_COKET;} location ^~ /memberlist.php {fastcgi_pass $_PHP_COKET;} location ^~ /mcp.php {fastcgi_pass $_PHP_COKET;} location ^~ /feed.php {fastcgi_pass $_PHP_COKET;} location ^~ /faq.php {fastcgi_pass $_PHP_COKET;} #location ^~ /install {fastcgi_pass $_PHP_COKET;if (!-e $request_filename){rewrite ^(.*)$ /app.php break;}} #location ^~ /install { # # Добавляем обработку PHP внутри /install # location ~ \.php$ {return 401; # # Убедись, что есть include fastcgi_params; (если нет глобально) # include fastcgi_params; # fastcgi_pass $_PHP_COKET; # } # # Условное перенаправление, как было # if (!-e $request_filename){return 402; # rewrite ^(.*)$ /app.php break; # } # # Если нужны дополнительные параметры (например, для картинок, JS), добавь здесь #} }
Нужно решить такую задачу?
Заказать помощь
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Лучший ответ
1
Другие ответы (0)
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопроскомментарий
Вам также может быть интересно
VPN
Как правильно настроить vless для Android TV?
1 ответ
Pyrogram
Как правильно зарегистрировать юзер бота в Telegram?
1 ответ
печатные-платы
Как заставить запускаться программу M3.exe от компании Hanxing AOI в инспекционной машине на Windows 7 Pro?
1 ответ
Аккумуляторные батареи
Почему при зарядке автостарта слышен писк, где искать причину?
1 ответ

Если PHP-файл в подпапке Nginx скачивается, а не выполняется, значит запрос не попадает в location, который передаёт PHP в PHP-FPM. Nginx отдаёт файл как статический, потому что правило для
.phpне сработало, перекрыто другим location или внутри подпапки есть отдельная логика phpBB.В конфиге должен быть PHP location примерно такого вида:
location ~ .php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/run/php/php8.2-fpm.sock; }
Проверьте, что
fastcgi_passуказывает на реальный сокет/порт вашей версии PHP-FPM:ls -la /run/php/ systemctl status php8.2-fpm
Если есть location для
/install/, он может перехватывать запрос раньше. Нужно либо убрать статическую отдачу для этой папки, либо внутри неё разрешить PHP.Проверьте итоговую конфигурацию:
nginx -T | grep -n "php|install|fastcgi"
После изменения:
nginx -t systemctl reload nginxnginx -t systemctl reload nginx
Никогда не оставляйте PHP-файлы скачиваемыми: так можно раскрыть исходный код и конфиги. Если
/install/app.phpвременный установщик, после установки его лучше удалить или закрыть.Итог: добавьте/исправьте PHP-FPM location, проверьте, что
/install/app.phpпопадает именно туда, а не в статический location. После правки проверьтеnginx -Tи перезагрузите Nginx.