Установка php 5.3.10

Так как на хостинге у Ру-центра используется устаревшая версия php, мы можем собрать свою. Как это сделать, описано ниже:

1. Подключаемся по SSH к хостингу.

2. Создаём папку tmp если её нет, и переходим в неё:

mkdir ~/tmp; cd ~/tmp
3. Заходим на http://php.net/downloads.php нажимаем на архив с расширением .tar.gz и ищем в списке свою страну. Копируем ссылку в буфер обмена(клик правой кнопкой мыши по ссылке `Копировать адрес ссылки`)/ 4. Открываем консоль. Скачиваем:
wget http://ru2.php.net/get/php-5.3.10.tar.gz/from/this/mirror
5. В итоге мы получаем архив вида php-5.3.8.tar.gz. Его нужно распаковать:
tar -xvf php-5.3.10.tar.gz
и сразу в него заходим:
cd php-5.3.10
6. Теперь самая ответственная часть. Компиляция./ Что бы не занимать лишнюю память на сервере нужно знать, какие модули php использует ваш сайт, Эту информацию следует смотреть на сайте разработчика системы, хотя есть и другой путь, который я опишу ниже.К примеру минимальные требованя для modx можно посмотреть здесь. для joomla здесь ну и так далее, просто идёте на сайт разработчика и ищете требования./ Итак, в примере я буду собирать php для modx revolution. Начинаем:

 

 

./configure --prefix=/home/$USER/php --disable-fileinfo --with-zlib --with-pdo-mysql --with-config-file-path=/home/$USER/php --with-gd --with-freetype-dir --with-jpeg-dir
что значит эта строка:/ –prefix=/home/$USER/php - здесь мы указываем в какой папке будет работать php/ –disable-fileinfo –with-zlib –with-pdo-mysql - указываем какие библиотеки будут вкомпилированы а какие нет./ –with-config-file-path=/home/$USER/php - указываем в какой папке будет лежать файл php.ini/ –with-gd –with-freetype-dir –with-jpeg-dir - библиотеку GD лучше вкомпилировать:) Она нужна:) После того, как процесс закончился, компилируем и инсталлируем:
make & make install
7. Вроде бы всё, php собрали, но нам не хватает еще модулей php, которые нам понадобятся. Модули находятся в папке php-5.3.10/ext В примере ниже, я покажу пример сборки модуля mysql: Перейдите в папку с расширением mysql
cd ext/mysql
Далее нужно воспользоваться утилитой phpize:
/home/$USER/php/bin/phpize
Следующий шаг - запускаем скрипт configure:
./configure --with-php-config=/home/$USER/php/bin/php-config --with-mysql=/home/$USER/php-5.3.10/ext/mysql/
и собираем:
make & make install
После выполнения всех операций в папке ~/php/lib/php/extensions/no-debug-non-zts-20090626/ появится файл mysql.so, который и является расширением mysql. Таким образом, при необходимости, вы можете скомпилировать все необходимые для работы сайта расширения.

 

8. Ну и последний, наверное, шаг - нужно настроить php.ini. Создайте в папке ~/php файл php.ini, сделать это можно к примеру так:

mcedit ~/php/php.ini
и вставьте туда следующее:
[php]
cgi.fix_pathinfo = 1
register_globals=0
allow_url_fopen=0
max_input_time=60
max_execution_time=30
safe_mode=0
display_errors=off
session.save_path="/tmp"
allow_url_include=0
file_uploads=1
magic_quotes_gpc=0
default_charset=windows-1251
default_socket_timeout=120
memory_limit=32M
post_max_size=8M
upload_max_filesize=8M
zlib.output_compression = 1
zlib.output_handler = On
extension_dir="/home/user/php/lib/php/extensions/no-debug-non-zts-20090626/"
default_charset = "utf-8"
realpath_cache_size = 512K
realpath_cache_ttl = 21600
date.timezone = "Europe/Moscow"
open_basdir="/tmp"

extension=soap.so
extension=pdo.so
extension=session.so
extension=mysql.so
extension=imagick.so
extension=curl.so
extension=mcrypt.so
extension=mbstring.so
#extension=eaccelerator.so

mysql.default_host=login.mysql
mysql.default_port=3306
В строках extension_dir и mysql.default_host измените login на идентификатор вашей услуги хостинга. Как видно из php.ini, у меня собраны следующие расширений php: soap, pdo, session, mysql, imagick, curl, mcrypt, mbstring и eaccelerator(который выключен #).

 

9. Если вы планируете использовать веб-сервер apache установленный по умолчанию, то в модулях веб-сервера необходимо включить модуль CGI: Далее сделайте симлинк на папку php-cgi сайта:

ln ~/php/bin/php-cgi ~/<ИМЯ_САЙТА>.ru/cgi/php-cgi

 

В папке с сайтом создаём файл .htaccess со следующим содержимым:

AddHandler php-cgi .php5 .php
Action php-cgi /cgi-bin/php-cgi
В принципе всё готово. Перезагрузите веб-сервер и попробуйте зайти на сайт. Если php вы скомпилировали правильно со всеми модулями, которые необходимы скриптам, то сайт запустится сразу. Если же чего то не хватает, то вместо сайта появятся ошибки. По ошибке надо смотреть какого модуля не хватает. Его, соответственно нужно будет докомпилировать и добавить в extension php.ini