Для обеспечения работоспособности php 5.2 и php 5.3 на одном сервере можно сделать следующее:
1. убедится, что php 5.2 и его расширения установлены из портов php52 и php52-extensions соответственно.
2. make -C /usr/ports/lang/php5/ PREFIX=/usr/local/php53 PHPBASE=/usr/local/php53 PHP_AUTOCONF=/usr/local/bin/autoconf-2.68 PHP_AUTOHEADER=/usr/local/bin/autoheader-2.68 install
3. make -C /usr/ports/lang/php5-extensions/ PREFIX=/usr/local/php53 PHPBASE=/usr/local/php53 PHP_AUTOCONF=/usr/local/bin/autoconf-2.68 PHP_AUTOHEADER=/usr/local/bin/autoheader-2.68 install
на этом шаге могут возникнуть проблемы с портами, которые не были еще установлены в систему и поставились по зависимостям модулей: из-за указания PREFIX они тоже поставятся в /usr/local/php53, но нам этого не надо, поэтому:
pkg_delete <проблемный порт>
make -C /usr/ports/<категория>/<проблемный порт> install
и повторяем пункт 3.
Настройка Apache
php 5.2 оставлен модулем, а php 5.3 будет работать через cgi.
1. добавляем:
ScriptAlias /php53/ “/usr/local/php53/bin/”
<Directory “/usr/local/php53/bin”>
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
2. для виртуальных хостов, которым требуется php 5.3 разрешаем переписывать FileInfo:
AllowOverride FileInfo
3. в документруте сайта в .htaccess надо добавить:
AddHandler php53 .php
Action php53 /cgi-bin/php53-cgi
4. копируем:
cp /usr/local/php53/bin/php-cgi ~<user>/cgi-bin/php53-cgi
Все пункты, кроме п.1, необходимы если используется suexec. Если же suexec не используется, то берем пп.1, 2, а 3 будет таким:
AddHandler php53 .php
Action php53 /php53/php-cgi
Примечание
В режиме cgi php не читает php.ini из домашнего каталога пользователя. Есть два способа решения:
1. сделать линк на пользовательский php.ini в каталоге cgi-bin:
cd ~/cgi-bin
ln -s ../php.ini
2. в php 5.3 появилась поддержка изменения настроек для каждого отдельного каталога путем размещения в них файла .user.ini
1. убедится, что php 5.2 и его расширения установлены из портов php52 и php52-extensions соответственно.
2. make -C /usr/ports/lang/php5/ PREFIX=/usr/local/php53 PHPBASE=/usr/local/php53 PHP_AUTOCONF=/usr/local/bin/autoconf-2.68 PHP_AUTOHEADER=/usr/local/bin/autoheader-2.68 install
3. make -C /usr/ports/lang/php5-extensions/ PREFIX=/usr/local/php53 PHPBASE=/usr/local/php53 PHP_AUTOCONF=/usr/local/bin/autoconf-2.68 PHP_AUTOHEADER=/usr/local/bin/autoheader-2.68 install
на этом шаге могут возникнуть проблемы с портами, которые не были еще установлены в систему и поставились по зависимостям модулей: из-за указания PREFIX они тоже поставятся в /usr/local/php53, но нам этого не надо, поэтому:
pkg_delete <проблемный порт>
make -C /usr/ports/<категория>/<проблемный порт> install
и повторяем пункт 3.
Настройка Apache
php 5.2 оставлен модулем, а php 5.3 будет работать через cgi.
1. добавляем:
ScriptAlias /php53/ “/usr/local/php53/bin/”
<Directory “/usr/local/php53/bin”>
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
2. для виртуальных хостов, которым требуется php 5.3 разрешаем переписывать FileInfo:
AllowOverride FileInfo
3. в документруте сайта в .htaccess надо добавить:
AddHandler php53 .php
Action php53 /cgi-bin/php53-cgi
4. копируем:
cp /usr/local/php53/bin/php-cgi ~<user>/cgi-bin/php53-cgi
Все пункты, кроме п.1, необходимы если используется suexec. Если же suexec не используется, то берем пп.1, 2, а 3 будет таким:
AddHandler php53 .php
Action php53 /php53/php-cgi
Примечание
В режиме cgi php не читает php.ini из домашнего каталога пользователя. Есть два способа решения:
1. сделать линк на пользовательский php.ini в каталоге cgi-bin:
cd ~/cgi-bin
ln -s ../php.ini
2. в php 5.3 появилась поддержка изменения настроек для каждого отдельного каталога путем размещения в них файла .user.ini