Apache: запрет выполнения PHP в /upload (1С-Битрикс)
Отключение выполнения PHP в каталоге upload для сайтов на 1С-Битрикс: через .htaccess (Require all denied) или php_admin_flag engine off в конфиге виртуального хоста.
Как использовать
- Вариант 1: положите .htaccess в каталог /upload/ сайта; нужен AllowOverride All (или хотя бы FileInfo) для этой директории.
- Вариант 2: добавьте блок Directory в конфиг виртуального хоста и перезапустите Apache.
- Проверьте: запрос к /upload/любой_файл.php должен возвращать 403 или не выполнять скрипт.
В 1С-Битрикс каталог /upload не предназначен для выполнения PHP (документация Bitrix). На Apache выполнение можно запретить двумя способами: через .htaccess в самом каталоге или через директиву в конфигурации виртуального хоста.
Вариант 1: .htaccess в каталоге upload
Файл размещается по пути: корень сайта/upload/.htaccess
# /upload/.htaccess — запрет выполнения всех .php в этой папке и подпапках
<FilesMatch "\.php$">
Require all denied
</FilesMatch>
Для работы .htaccess у директории должен быть разрешён AllowOverride (например, AllowOverride FileInfo или AllowOverride All) в конфиге хоста.
Вариант 2: конфигурация виртуального хоста
Подходит если вы управляете конфигом Apache напрямую (VPS, выделенный сервер).
<Directory /var/www/site/upload>
php_admin_flag engine off
</Directory>
Замените /var/www/site/upload на фактический путь к каталогу upload вашего сайта. После изменения перезапустите Apache (systemctl restart apache2 или service httpd restart).
Замечания
- С способом 1 запрос к
/upload/file.phpобычно возвращает 403 Forbidden. - С способом 2 PHP не обрабатывает такие файлы (движок PHP в этой директории выключен).
- В
/uploadне должно быть рабочих PHP-скриптов; если есть кастомная логика — перенесите её в/localили другой каталог.