Гид по технологиям

Как настроить suPHP на сервере ISPConfig на Debian Sarge

• 5 min read • Серверы • Обновлено 27 Nov 2025
Настройка suPHP на Debian Sarge (ISPConfig)
Настройка suPHP на Debian Sarge (ISPConfig)

Version 1.3
Author: [at] bb-hosting [dot] org>

Введение

В этом руководстве показано, как настроить suPHP на сервере ISPConfig, основанном на Debian Sarge, с PHP4. Основная база — руководства Falko и материалы форумов Howtoforge. Здесь собраны пошаговые команды и пояснения, чтобы сократить разброс информации по форумам.

Важно: я тестировал эту инструкцию на Debian Sarge с ISPConfig 2.2.11 и Apache 4.3.10-19; гарантий работоспособности в других сборках нет.

Требования

  • root-доступ к серверу
  • ISPConfig установлен и доступен
  • Резервная копия конфигураций Apache

Важно: перед началом сделайте копию вашего файла /etc/apache2/vhosts/Vhosts_ispconfig.conf, например:

cp /etc/apache2/vhosts/Vhosts_ispconfig.conf /etc/apache2/vhosts/Vhosts_ispconfig-backup.conf

Обзор подхода

Мы отключаем модуль php4, устанавливаем php4-cgi и собираем suPHP как модуль Apache (DSO) через apxs2. Затем настраиваем /etc/suphp.conf и даём ISPConfig управлять vhost-файлами так, чтобы для каждого сайта добавлялись директивы suPHP_Engine и suPHP_UserGroup.

Пошаговая установка

  1. Отключите PHP4 как модуль Apache:
a2dismod php4
  1. Удалите все упоминания phpadmin в оригинальном Vhosts_ispconfig.conf (если есть), затем перезапустите Apache:
/etc/init.d/apache2 restart

После этого ошибок при рестарте Apache быть не должно.

  1. Установите apxs (в Sarge это apxs2), чтобы собирать модуль:
apt-get install apache2-prefork-dev
  1. Установите php4-cgi и перейдите во временную папку:
apt-get install php4-cgi
cd /tmp
  1. Скачайте и распакуйте suPHP (в инструкции использована версия 0.6.2):
wget http://www.suphp.org/download/suphp-0.6.2.tar.gz
tar xvfz suphp-0.6.2.tar.gz
cd suphp-0.6.2
vi src/apache2/mod_suphp.c

В файле src/apache2/mod_suphp.c замените строки 324/325 на эти (в других версиях номера строк могут отличаться):

AP_INIT_ITERATE("suPHP_AddHandler", suphp_handle_cmd_add_handler, NULL, RSRC_CONF | ACCESS_CONF, "Tells mod_suphp to handle these MIME-types"),

AP_INIT_ITERATE("suPHP_RemoveHandler", suphp_handle_cmd_remove_handler, NULL, RSRC_CONF | ACCESS_CONF, "Tells mod_suphp not to handle these MIME-types"),
  1. Соберите и установите suPHP:
./configure --prefix=/usr --sysconfdir=/etc --with-apache-user=www-data --with-setid-mode=paranoid --with-apxs=/usr/bin/apxs2
make
make install
  1. Скопируйте пример конфигурации suPHP и отредактируйте его:
cp /tmp/suphp-0.6.2/doc/suphp.conf-example /etc/suphp.conf
vi /etc/suphp.conf

Пример содержимого /etc/suphp.conf (сохраните значения, приведённые ниже, или адаптируйте при необходимости):

[global]
;Path to logfile
logfile=/var/log/suphp.log

;Loglevel
loglevel=info

;User Apache is running as
webserver_user=www-data

;Path all scripts have to be in
docroot=/

;Path to chroot() to before executing script
;chroot=/mychroot

; Security options
allow_file_group_writeable=true
allow_file_others_writeable=false
allow_directory_group_writeable=true
allow_directory_others_writeable=false

;Check wheter script is within DOCUMENT_ROOT
check_vhost_docroot=true

;Send minor error messages to browser
errors_to_browser=false

;PATH environment variable
env_path=/bin:/usr/bin

;Umask to set, specify in octal notation
umask=0077

; Minimum UID
min_uid=100

; Minimum GID
min_gid=100

[handlers]
;Handler for php-scripts
x-httpd-php=php:/usr/bin/php4-cgi

;Handler for CGI-scripts
x-suphp-cgi=execute:!self
  1. Подключите модуль suPHP в Apache, добавив в /etc/apache2/httpd.conf строку:
LoadModule suphp_module       /usr/lib/apache2/modules/mod_suphp.so

Затем перезапустите Apache:

/etc/init.d/apache2 restart
  1. Сообщите ISPConfig, что Apache должен использовать suPHP. Отредактируйте файл конфигурации ISPConfig:
vi /home/admispconfig/ispconfig/lib/config.inc.php

Найдите строку:

$go_info["server"]["apache2_php"] = 'both';

и замените на:

$go_info["server"]["apache2_php"] = 'suphp';
  1. Внесите любое небольшое изменение в сайт через ISPConfig (например, включите CGI-скрипты) — это заставит ISPConfig перезаписать vhost-файл. В /etc/apache2/vhosts/Vhosts_ispconfig.conf вы увидите для каждого сайта добавленные строки вида:
suPHP_Engine on
suPHP_UserGroup username groupname
AddHandler x-httpd-php .php .php3 .php4 .php5
suPHP_AddHandler x-httpd-php

Важно: не вносите ручные изменения в /etc/apache2/vhosts/Vhosts_ispconfig.conf — ISPConfig управляет этим файлом и перезапишет ваши правки.

  1. Проверка прав и запуск скриптов

После настройки вы сможете назначать права через FTP и запускать PHP-скрипты от имени пользователя сайта вместо системного www-data:

FTP: пример установки прав chmod для веб-папки

Это удобно для CMS вроде Joomla — сайт получает нужные права без опасных chmod 777.

Откат для отдельных сайтов: модульный PHP4

Если для конкретного сайта вы хотите оставить php4 как модуль, включите модуль php4 и перезагрузите Apache:

a2enmod php4
/etc/init.d/apache2 force-reload

В интерфейсе ISPConfig для этого сайта отключите php и в поле Apache directives добавьте:


AddType application/x-httpd-php .php .php3 .php4
php_admin_flag safe_mode Off

Таким образом, вы можете сочетать PHP4-mod и PHP4-CGI+suPHP в одном сервере.

Когда этот подход может не подходить

  • Если у вас специфические модули, зависящие от mod_php (модульного PHP), которые не совместимы с CGI
  • Если у вас очень высоконагруженные сайты: модульный PHP иногда эффективнее по потреблению при большом количестве запросов (вместо запуска CGI-процесса)
  • Для современных проектов лучше использовать PHP-FPM с пулом процессов вместо устаревшего php4

Альтернативные подходы

  • PHP-FPM + Apache (mod_proxy_fcgi) — современный и производительный вариант для PHP 5.3+ и выше
  • Оставить mod_php (php4) для совместимости, но следить за безопасностью
  • Переход на более новую версию дистрибутива и PHP — рекомендуется для долгосрочной поддержки и безопасности

Критерии приёмки

  • Apache стартует без ошибок после внесённых изменений
  • Для сайта в Vhosts_ispconfig.conf присутствуют suPHP_Engine on и suPHP_UserGroup
  • PHP-скрипты выполняются от имени владельца сайта (проверяется через phpinfo() или исполняемый скрипт, выводящий getmyuid())
  • Логи suPHP (/var/log/suphp.log) не содержат критических ошибок при запуске страниц

Чек-лист для администратора

  • Сделан бэкап /etc/apache2/vhosts/Vhosts_ispconfig.conf
  • Отключён модуль php4 (a2dismod php4)
  • Установлен php4-cgi
  • Собран и установлен mod_suphp через apxs2
  • Отредактирован /etc/suphp.conf и /etc/apache2/httpd.conf
  • Изменён параметр apache2_php в конфиге ISPConfig
  • Проверены права и запуск скриптов под владельцем сайта

Простая методология проверки (микро-SOP)

  1. Сделать бэкап конфигурации Apache. 2. Отключить модуль php4 и установить php4-cgi. 3. Собрать и установить suPHP, отредактировать /etc/suphp.conf. 4. Подключить модуль в httpd.conf, перезапустить Apache. 5. Изменить конфиг ISPConfig и обновить vhost через GUI. 6. Проверить запуск страниц и логи.

Набор тестов/критерии приёмки

  • Тест 1: Открыть phpinfo() — должен быть виден CGI-интерпретатор, UID владельца совпадает с пользователем сайта.
  • Тест 2: Попытка записи файла скриптом — успешна только при корректных правах владельца и настройках allow_*.
  • Тест 3: Проверка логов — отсутствие ошибок suPHP при запросах сайта.

Факты и важные параметры

  • По умолчанию min_uid и min_gid в примере заданы как 100 — это предотвращает запуск от системных пользователей.
  • umask=0077 повышает безопасность файлов, создаваемых процессом.
  • Логи suPHP находятся в /var/log/suphp.log — первичный источник при отладке.

Риски и смягчения

  • Риск: неправильные права файлов приведут к ошибкам выполнения. Смягчение: строгие umask и тестирование на тестовом сайте.
  • Риск: вмешательство в Vhosts_ispconfig.conf будет перезаписано ISPConfig. Смягчение: правьте только шаблоны через ISPConfig.

Короткое объявление (100–200 слов)

Если вы управляете сайтом на Debian Sarge с ISPConfig и хотите, чтобы PHP-скрипты выполнялись от имени пользователя сайта, а не от www-data, настройка php4-cgi + suPHP — практичное решение. Эта инструкция проведёт вас через отключение модульного PHP4, установку php4-cgi, сборку и установку suPHP через apxs2, настройку /etc/suphp.conf и интеграцию с ISPConfig. suPHP особенно полезен для CMS вроде Joomla: вы получаете безопасные права файлов без необходимости ставить chmod 777. При необходимости можно оставить php4 как модуль для отдельных сайтов. Всегда делайте бэкапы конфигураций и проверяйте логи после изменений.

Краткое резюме

  • suPHP позволяет запускать PHP-скрипты от имени владельца сайта.
  • Процесс: отключаем модуль php4, устанавливаем php4-cgi, собираем suPHP, правим конфиги и даём ISPConfig управлять vhosts.
  • Тестируйте и держите резервные копии конфигураций.

Важно: эта инструкция ориентирована на старые сборки (Debian Sarge, PHP4). Для современных систем рекомендуется использовать PHP-FPM и обновлённые дистрибутивы.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро