php4 и php5 на одном сервере используя suphp

Обсуждаем сайт и форум.

Модератор: f0s

daiver
проходил мимо
Сообщения: 4
Зарегистрирован: 2007-12-05 16:49:26

php4 и php5 на одном сервере используя suphp

Непрочитанное сообщение daiver » 2007-12-05 17:09:57

Как заставить работать обе версии php на одном сервере?
Я сделал это используя 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 
Теперь нужно подправить исходники. Без этой операции apache не запуститься!

Открываем 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]
;Путь до лог файла
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
Добавляем в /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:

Логин аккаунта: 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>
В этом случае по умолчанию будет использваться 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>
Последний раз редактировалось daiver 2007-12-06 12:32:57, всего редактировалось 2 раза.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35465
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: php4 и php5 на одном сервере используя suphp

Непрочитанное сообщение Alex Keda » 2007-12-05 17:12:30

первый вопрос:

Код: Выделить всё

lissyara$ cd /usr/ports/
lissyara$ make search name='suphp'
Port:   suphp-0.5.2_2
Path:   /usr/ports/www/suphp
Info:   Securely execute PHP scripts
Maint:  freebsd@jdc.parodius.com
B-deps: apache-1.3.39_2 expat-2.0.0_1 perl-5.8.8_1
R-deps: apache-1.3.39_2 expat-2.0.0_1 libiconv-1.11_1 libxml2-2.6.30 perl-5.8.8_1 php5-5.2.5 pkg-config-0.22_1
WWW:    http://www.suphp.org/

lissyara$
чем не устроило?
==========
второе - пожелание - опции опиши в make.conf - иначе при обновлениях проблемы будут.
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35465
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: php4 и php5 на одном сервере используя suphp

Непрочитанное сообщение Alex Keda » 2007-12-05 17:13:38

и комменты напиши русские к конфигу suphp
=========
а вообще - хорошо.
ещё бы без правки mk обойтись - но тут никак :(
Убей их всех! Бог потом рассортирует...

daiver
проходил мимо
Сообщения: 4
Зарегистрирован: 2007-12-05 16:49:26

Re: php4 и php5 на одном сервере используя suphp

Непрочитанное сообщение daiver » 2007-12-05 17:17:12

В любом случае придётся вручную исправлять src/apache/mod_suphp.c, как в 0.5 так и в 0.6.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35465
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: php4 и php5 на одном сервере используя suphp

Непрочитанное сообщение Alex Keda » 2007-12-05 17:23:34

daiver писал(а):В любом случае придётся вручную исправлять src/apache/mod_suphp.c, как в 0.5 так и в 0.6.
а зачем это вообще нужно?
Убей их всех! Бог потом рассортирует...

daiver
проходил мимо
Сообщения: 4
Зарегистрирован: 2007-12-05 16:49:26

Re: php4 и php5 на одном сервере используя suphp

Непрочитанное сообщение daiver » 2007-12-06 12:26:51

lissyara писал(а): а зачем это вообще нужно?
Без этого apache просто не запуститься.
#apachectl start
...
suPHP_AddHandler not allowed here

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35465
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: php4 и php5 на одном сервере используя suphp

Непрочитанное сообщение Alex Keda » 2007-12-06 13:30:51

понятно.
но всё же лучше нарисовать патч для порта и юзать порты...
Убей их всех! Бог потом рассортирует...


Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35465
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: php4 и php5 на одном сервере используя suphp

Непрочитанное сообщение Alex Keda » 2007-12-08 13:27:02

дык - к этому и ведём.
однако, лучше, для статьи, нарисовать патч для порта и юзать порты.
тока автор пропал...
Убей их всех! Бог потом рассортирует...

daiver
проходил мимо
Сообщения: 4
Зарегистрирован: 2007-12-05 16:49:26

Re: php4 и php5 на одном сервере используя suphp

Непрочитанное сообщение daiver » 2007-12-08 14:11:15

Не пропал :)
Внимательно слежу за всем. В течение выходных займусь вопросом.
По поводу патча - нужна помощь, ибо я не занимался никогда такими вопросами.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35465
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: php4 и php5 на одном сервере используя suphp

Непрочитанное сообщение Alex Keda » 2007-12-08 18:50:42

копируешь файл который будешь править в .orig
gправишь ригинальный, затем топаешь и относительно wrksrc делаешь diff
его кладёшь в files/
всё. теперь оно его само будет цеплять при установке
Убей их всех! Бог потом рассортирует...