Настройка сервера · 3 min read · Dec 16, 2025
Как настроить suPHP с PHP4 и PHP5 - Страница 2
4 Установите PHP4-CGI
Сначала я опишу, как использовать suPHP с PHP4, затем позже в этом руководстве, как использовать его с PHP5, а в конце как использовать его с обеими версиями, установленными одновременно.
Как я уже упоминал ранее, suPHP требует PHP в качестве CGI вместо модуля Apache. Поэтому мы устанавливаем пакет php4-cgi следующим образом:
apt-get install php4-cgi5 Установите suPHP
Далее мы загружаем и распаковываем исходные коды suPHP. На момент написания этой статьи текущая версия была 0.6.1:
cd /tmp
wget http://www.suphp.org/download/suphp-0.6.1.tar.gz
tar xvfz suphp-0.6.1.tar.gz
cd suphp-0.6.1Теперь мы должны отредактировать src/apache2/mod_suphp.c, иначе вы получите ошибку, подобную этой:
| Принудительная перезагрузка веб-сервера: Apache2Синтаксическая ошибка в строке 49 файла /etc/apache2/sites-enabled/000-default: suPHP_AddHandler не разрешено здесь |
когда вы добавите некоторые директивы suPHP в ваши виртуальные хосты Apache. Откройте файл, и в строках 316 и 317 (номера строк могут отличаться, если вы используете версию suPHP, отличную от 0.6.1) вы найдете строку ACCESS_CONF. Замените ее на RSRC_CONF | ACCESS_CONF, чтобы две строки выглядели так:
vi src/apache2/mod_suphp.c| AP_INIT_ITERATE("suPHP_AddHandler", suphp_handle_cmd_add_handler, NULL, RSRC_CONF | ACCESS_CONF, "Указывает mod_suphp обрабатывать эти MIME-типы"), AP_INIT_ITERATE("suPHP_RemoveHandler", suphp_handle_cmd_remove_handler, NULL, RSRC_CONF | ACCESS_CONF, "Указывает mod_suphp не обрабатывать эти MIME-типы"), |
(Если вы предпочитаете редактировать файл на вашей системе Windows, убедитесь, что вы сохраняете его с Unix-разрывами строк вместо разрывов строк Windows перед тем, как перенести файл обратно на вашу систему Linux!)
Затем мы компилируем и устанавливаем suPHP:
./configure --prefix=/usr --sysconfdir=/etc --with-apache-user=www-data --with-setid-mode=paranoid --with-apxs=/usr/bin/apxs2
make
make installТеперь нам нужно создать файл конфигурации /etc/suphp.conf. Мы можем сделать это, просто скопировав шаблон, который идет с исходниками:
cp /tmp/suphp-0.6.1/doc/suphp.conf-example /etc/suphp.confМы должны внести несколько изменений в /etc/suphp.conf. Установите значение webserver_user на www-data (это имя пользователя Apache в стандартном пакете Apache для Debian), а для x-httpd-php мы должны указать наш бинарный файл php4-cgi, который находится по адресу /usr/bin/php4-cgi, так что финальный файл выглядит так:
vi /etc/suphp.conf| [global] ;Путь к файлу журнала logfile=/var/log/suphp.log ;Уровень журнала loglevel=info ;Пользователь, от имени которого работает Apache webserver_user=www-data ;Путь, в котором должны находиться все скрипты docroot=/ ;Путь к chroot() перед выполнением скрипта ;chroot=/mychroot ; Опции безопасности allow_file_group_writeable=false allow_file_others_writeable=false allow_directory_group_writeable=false allow_directory_others_writeable=false ;Проверить, находится ли скрипт в DOCUMENT_ROOT check_vhost_docroot=true ;Отправить незначительные сообщения об ошибках в браузер errors_to_browser=false ;Переменная окружения PATH env_path=/bin:/usr/bin ;Umask для установки, укажите в восьмеричном формате umask=0077 ; Минимальный UID min_uid=100 ; Минимальный GID min_gid=100 [handlers] ;Обработчик для php-скриптов x-httpd-php=php:/usr/bin/php4-cgi ;Обработчик для CGI-скриптов x-suphp-cgi=execute:!self |
Затем мы должны добавить модуль suPHP в конфигурацию Apache. Добавьте следующую строку в /etc/apache2/httpd.conf:
vi /etc/apache2/httpd.conf| LoadModule suphp_module /usr/lib/apache2/modules/mod_suphp.so |
Затем перезапустите Apache:
/etc/init.d/apache2 restart6 Конфигурация Apache
В этой главе я предполагаю, что у нас есть веб-сайт www.example.com с IP-адресом 1.2.3.4 и корнем документа /var/www и следующей конфигурацией виртуального хоста:
| |
Чтобы включить suPHP для виртуального хоста www.example.com и позволить ему запускать PHP-скрипты от имени пользователя testuser и группы test, мы изменяем виртуальный хост следующим образом:
| |
AddHandler x-httpd-php ссылается на suPHP_AddHandler x-httpd-php, который затем ссылается на строку x-httpd-php в /etc/suphp.conf, что означает, что скрипты с расширениями .php, .php3, .php4 и .php5 интерпретируются с помощью /usr/bin/php4-cgi.
Перезапустите Apache:
/etc/init.d/apache2 restartТеперь мы создаем простой скрипт phpinfo() и открываем его в нашем браузере:
vi /var/www/info.php| |
Перейдите по адресу http://www.example.com/info.php в вашем браузере, и вы должны увидеть, что у вас работает PHP4:

Если вы столкнетесь с проблемами, пожалуйста, проверьте /var/log/suphp.log и /var/log/apache2/error.log на наличие ошибок. Чаще всего вы можете исправить их, изменив соответствующую опцию в /etc/suphp.conf или изменив разрешения файлов/каталогов.
Get new posts in your inbox
No spam. Unsubscribe anytime.