Настройка сервера · 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-cgi

5 Установите 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 restart

6 Конфигурация Apache

В этой главе я предполагаю, что у нас есть веб-сайт www.example.com с IP-адресом 1.2.3.4 и корнем документа /var/www и следующей конфигурацией виртуального хоста:

| ServerName www.example.com ServerAdmin [email protected] DocumentRoot /var/www |

Чтобы включить suPHP для виртуального хоста www.example.com и позволить ему запускать PHP-скрипты от имени пользователя testuser и группы test, мы изменяем виртуальный хост следующим образом:

| ServerName www.example.com ServerAdmin [email protected] DocumentRoot /var/www suPHP_Engine on suPHP_UserGroup testuser test AddHandler x-httpd-php .php .php3 .php4 .php5 suPHP_AddHandler x-httpd-php |

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 или изменив разрешения файлов/каталогов.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.