Ключевые слова:php, apache, cgi, freebsd, suphp, (найти похожие документы)
From: daiver <admin@daiver.org.>
Date: Mon, 6 Dec 2007 14:31:37 +0000 (UTC)
Subject: php4 и php5 на freebsd одновременно, используя suphp.
Как заставить работать обе версии php на одном сервере freebsd?
Я сделал это используя suphp
Устанавливаем php4 с поддержкой CGI:
cd /usr/ports/lang/php4
make install clean
Устанавливаем необходимые модули:
cd /usr/ports/lang/php4-extensions
make config
make install clean
Устанавливем php5 с поддержкой CGI:
cd /usr/ports/lang/php5
make config
make PREFIX=/usr/local/php5 install
Открываем /usr/ports/Mk/bsd.php.mk и заменяем ${LOCALBASE} на ${PREFIX}
исключая этот блок:
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
Мой bsd.php.mk
Устанавливаем необходимые модули для php5:
cd /usr/ports/lang/php5-extensions
make config
make PREFIX=/usr/local/php5 install
Собираем suphp:
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
В моём случае apache работает от пользователя www
Рихтуем /usr/local/etc/suphp.conf :
[global]
;Path to logfile
logfile=/var/log/suphp.log
;Loglevel
loglevel=info
;User Apache is running as
webserver_user=www
;Path all scripts have to be in
docroot=/
;Path to chroot() to before executing script
;chroot=/
; Security options
allow_file_group_writeable=false
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/local/bin/php-cgi
x-httpd-php5=php:/usr/local/php5/bin/php-cgi
;Handler for CGI-scripts
;x-suphp-cgi=execute:!self
Добавляем в /usr/local/etc/apache/httpd.conf
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>
Настраиваем VHosts:
<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>
В этом случае по умолчанию будет использваться php4.
Если необходим 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>
</VirtualHost>
Если есть вопросы, комментируйте.