Я сделал это используя suphp
Устанавливаем php4 с поддержкой CGI:
Код: Выделить всё
cd /usr/ports/lang/php4
make install clean
Код: Выделить всё
cd /usr/ports/lang/php4-extensions
make config
make install clean
Код: Выделить всё
cd /usr/ports/lang/php5
make config
make PREFIX=/usr/local/php5 install
Код: Выделить всё
HTTPD?= ${LOCALBASE}/sbin/httpd
.if exists(${HTTPD})
APACHE_VERSION!= ${HTTPD} -V | ${SED} -ne 's/^Server version: Apache\/\([0-9]\)\.\([0-9]*\).*/\1\2/p'
. if ${APACHE_VERSION} > 13
APXS?= ${LOCALBASE}/sbin/apxs
APACHE_MPM!= ${APXS} -q MPM_NAME
. if ${APACHE_MPM} == "worker"
PHP_EXT_DIR:= ${PHP_EXT_DIR}-zts
. endif
Устанавливаем необходимые модули для php5:
Код: Выделить всё
cd /usr/ports/lang/php5-extensions
make config
make PREFIX=/usr/local/php5 install
Код: Выделить всё
cd /usr/src && wget http://www.suphp.org/download/suphp-0.6.2.tar.gz && tar xzf suphp-0.6.2.tar.gz && cd suphp-0.6.2
Открываем src/apache/mod_suphp.c на строчке 252 и заменяем:
"ACCESS_CONF" на "RSRC_CONF|ACCESS_CONF"
Код: Выделить всё
/* Command table */
static const command_rec suphp_cmds[] = {
{"suPHP_Engine", suphp_handle_cmd_engine, NULL, RSRC_CONF|ACCESS_CONF,
FLAG, "Whether suPHP is on or off, default is off"},
{"suPHP_ConfigPath", suphp_handle_cmd_config, NULL, OR_OPTIONS, TAKE1,
"Where the php.ini resides, default is the PHP default"},
#ifdef SUPHP_USE_USERGROUP
{"suPHP_UserGroup", suphp_handle_cmd_user_group, NULL,
RSRC_CONF|ACCESS_CONF, TAKE2, "User and group scripts shall be run as"},
#endif
{"suPHP_AddHandler", suphp_handle_cmd_add_handler, NULL, RSRC_CONF|ACCESS_CONF,
ITERATE, "Tells mod_suphp to handle these MIME-types"},
{"suphp_RemoveHandler", suphp_handle_cmd_remove_handler, NULL, RSRC_CONF|ACCESS_CONF,
ITERATE, "Tells mod_suphp not to handle these MIME-types"},
{NULL}
};
Код: Выделить всё
./configure --with-apxs=/usr/local/sbin/apxs --with-apache-user=www --with-logfile=/var/logs/suphp_log --prefix=/usr/local
Рихтуем /usr/local/etc/suphp.conf :
Код: Выделить всё
[global]
;Путь до лог файла
logfile=/var/log/suphp.log
;Уровень логирования
loglevel=info
;От какого пользователя запускается apache. В моём случае - www
webserver_user=www
;Путь до скриптов
docroot=/
;Пусть до chroot()
;chroot=/
;Опции безопасности
allow_file_group_writeable=false
allow_file_others_writeable=false
allow_directory_group_writeable=true
allow_directory_others_writeable=false
;Проверка vhosts
check_vhost_docroot=true
;Отображение ошибок в браузере
errors_to_browser=false
;Переменные среды
env_path=/bin:/usr/bin
;Umask в восьмеричной системе.
umask=0077
; Минимальный UID
min_uid=100
; Минимальный GID
min_gid=100
[handlers]
;Handler для php скриптов
x-httpd-php=php:/usr/local/bin/php-cgi
x-httpd-php5=php:/usr/local/php5/bin/php-cgi
;Handler для CGI-scripts
;x-suphp-cgi=execute:!self
Код: Выделить всё
LoadModule suphp_module libexec/apache/mod_suphp.so
AddModule mod_suphp.c
<IfModule mod_suphp.c>
suPHP_Engine on
suPHP_UserGroup www www
suPHP_AddHandler x-httpd-php
suPHP_AddHandler x-httpd-php5
AddHandler x-httpd-php .php
AddHandler x-httpd-php5 .php5
AddType application/x-httpd-php .php
AddType application/x-httpd-php5 .php5
</IfModule>
<IfModule mod_php4.c>
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php4
AddType application/x-httpd-php .php3
AddType application/x-httpd-php-source .phps
AddType application/x-httpd-php .phtml
</IfModule>
Логин аккаунта: test2.com
Код: Выделить всё
<VirtualHost 10.10.10.114>
ServerName test2.com
DocumentRoot /home/www/test2.com
<IfModule mod_suphp.c>
suPHP_UserGroup test2.com test2.com
</IfModule>
</VirtualHost>
Если необходим php5 по умолчанию:
Код: Выделить всё
<VirtualHost 10.10.10.114>
ServerName test1.com
DocumentRoot /home/www/test1.com
<IfModule mod_suphp.c>
suPHP_UserGroup test1.com test1.com
AddHandler x-httpd-php5 .php
AddType application/x-httpd-php5 .php
</IfModule>