Наверняка многие, установив 12.04, с удивлением обнаружили, что в ней живет PHP версии 5.3.х. Меня это не слишком устраивало, так как проекты я стараюсь писать на "свежей" версии языка, чтобы было поменьше проблем при обновлениях на сервере. Итак, перелопатив кучу советов и настроив-таки рабочую машину, делюсь с вами своим опытом. Не браните громко, ибо сие произведение - мой первый опыт блоготворчества :)
В первую очередь проверьте, какую версию PHP вы имеете сейчас:
user@server:~$ php -v
Скорее всего, ответом будет:
PHP 5.3.10-1ubuntu3.4 with Suhosin-Patch (cli)
Что ж, приступаете к замене:
user@server:~$ sudo apt-get install make python-software-properties
user@server:~$ sudo add-apt-repository ppa:ondrej/php5
user@server:~$ sudo apt-get update
user@server:~$ sudo apt-get upgrade
user@server:~$ sudo apt-get install php5 libapache2-mod-php5
С этим проблем быть не должно :)
После замены php 5.3 на 5.4 [пере]устанавливаете расширения:
user@server:~$ sudo apt-get install php5-dev php5-curl php5-gd php5-imagick php5-intl php5-mcrypt php5-memcached php5-mysql php5-xdebug php5-xmlrpc
Если у вас есть расширения, которые устанавливались вручную (например, xdebug) или через pecl (например, mongo) - удаляете их и снова устанавливаете, как ни в чем не бывало:
user@server:~$ sudo pecl uninstall mongo
user@server:~$ sudo pecl install mongo
Снова смотрите на версию:
user@server:~$ php -v
Я сразу после процедуры получил следующее:
Failed loading /usr/lib/php5/20090626/xdebug.so: /usr/lib/php5/20090626/xdebug.so: cannot open shared object file: No such file or directory
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20100525/ffmpeg.so' - /usr/lib/php5/20100525/ffmpeg.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP 5.4.9-4~precise+1 (cli) (built: Nov 30 2012 10:42:23)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
Как видите, осталась проблема с xdebug. Но с ней справиться было легко: немного шаманства с locate показало, что теперь его .so-шка просто-напросто лежит в другой папке :) Мне осталось лишь вручную заменить путь с "zend_extension=/usr/lib/php5/20090626/xdebug.so" на новый "zend_extension=/usr/lib/php5/20100525/xdebug.so" - и все заработало как часы:
user@server:~$ sudo nano /etc/php5/conf.d/20-xdebug.ini
Заметка для особо любопытных: обратите внимание, что теперь имена почти всех .ini-файлов в /etc/php5/conf.d (кроме установленных вручную) начинаются с 10- или 20-.
Снова проверяете:
user@server:~$ php -v
Если остались проблемы (скорее всего это "ручные" расширения) - переустанавливаете расширения, на которые ругается система (смотри выше). У меня система выдала следующий ответ:
PHP 5.4.9-4~precise+1 (cli) (built: Nov 30 2012 10:42:23)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
with Xdebug v2.2.1, Copyright (c) 2002-2012, by Derick Rethans
Если же (ура!) все в порядке - рестартуете апач:
user@server:~$ sudo service apache2 restart
Вуа-ля, пользуйтесь :)
В первую очередь проверьте, какую версию PHP вы имеете сейчас:
user@server:~$ php -v
Скорее всего, ответом будет:
PHP 5.3.10-1ubuntu3.4 with Suhosin-Patch (cli)
Что ж, приступаете к замене:
user@server:~$ sudo apt-get install make python-software-properties
user@server:~$ sudo add-apt-repository ppa:ondrej/php5
user@server:~$ sudo apt-get update
user@server:~$ sudo apt-get upgrade
user@server:~$ sudo apt-get install php5 libapache2-mod-php5
С этим проблем быть не должно :)
После замены php 5.3 на 5.4 [пере]устанавливаете расширения:
user@server:~$ sudo apt-get install php5-dev php5-curl php5-gd php5-imagick php5-intl php5-mcrypt php5-memcached php5-mysql php5-xdebug php5-xmlrpc
Если у вас есть расширения, которые устанавливались вручную (например, xdebug) или через pecl (например, mongo) - удаляете их и снова устанавливаете, как ни в чем не бывало:
user@server:~$ sudo pecl uninstall mongo
user@server:~$ sudo pecl install mongo
Снова смотрите на версию:
user@server:~$ php -v
Я сразу после процедуры получил следующее:
Failed loading /usr/lib/php5/20090626/xdebug.so: /usr/lib/php5/20090626/xdebug.so: cannot open shared object file: No such file or directory
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20100525/ffmpeg.so' - /usr/lib/php5/20100525/ffmpeg.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP 5.4.9-4~precise+1 (cli) (built: Nov 30 2012 10:42:23)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
Рассудив здраво, решил с ffmpeg-ом не заморачиваться (необходимости в нем пока не наблюдается), и я его снес.
Как видите, осталась проблема с xdebug. Но с ней справиться было легко: немного шаманства с locate показало, что теперь его .so-шка просто-напросто лежит в другой папке :) Мне осталось лишь вручную заменить путь с "zend_extension=/usr/lib/php5/20090626/xdebug.so" на новый "zend_extension=/usr/lib/php5/20100525/xdebug.so" - и все заработало как часы:
user@server:~$ sudo nano /etc/php5/conf.d/20-xdebug.ini
Заметка для особо любопытных: обратите внимание, что теперь имена почти всех .ini-файлов в /etc/php5/conf.d (кроме установленных вручную) начинаются с 10- или 20-.
Снова проверяете:
user@server:~$ php -v
Если остались проблемы (скорее всего это "ручные" расширения) - переустанавливаете расширения, на которые ругается система (смотри выше). У меня система выдала следующий ответ:
PHP 5.4.9-4~precise+1 (cli) (built: Nov 30 2012 10:42:23)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
with Xdebug v2.2.1, Copyright (c) 2002-2012, by Derick Rethans
Если же (ура!) все в порядке - рестартуете апач:
user@server:~$ sudo service apache2 restart
Вуа-ля, пользуйтесь :)
Стараюсь сначала смотреть в офф репы по новым версиям. Например:
ОтветитьУдалитьhttp://packages.ubuntu.com/search?keywords=php5&searchon=names&suite=all§ion=all
Подключаем реп с нужной версией, инсталим, отключаем:)
Но, если PPA довуряем, то можео и оттуда.
Уже, конечно, этот пост неактуален, ибо 5.4 уже в основном репозитории :)
ОтветитьУдалитьОднако я опирался на "рекомендации лучших собаководов", поэтому и не стал ничего другого искать, сразу подключил этот PPA. О чем не жалел :) Я всего лишь описал подводные камни, появившиеся у меня на пути.
Но Ваш метод, безусловно, идеален - в том случае, если прокладка между креслом и монитором достаточно продвинута ;)
http://www.dotdeb.org/instructions/
ОтветитьУдалитьSlava: dotdeb.org для Debian под Ubuntu оно то работать будет но я бы не советовал и там версия PHP устаревшая
ОтветитьУдалитьЕсли кому нужен PHP 5.4.12-amd64 для Debian 7 Wheezy x64 могу поделиться. Или кто знает куда можно залить пакеты для Debian буду очень признателен.
ОтветитьУдалитьобещали php 5.4 ... получилось php 5.5 ))
ОтветитьУдалитьдык почти год прошел :)
Удалитья тоже 5.5 получил :) Автор что-то ты не то написал ))
УдалитьЭтот комментарий был удален автором.
ОтветитьУдалитьЕще немного о граблях: в Apache 2.4 нету модуля mod_scgi.so (который, например, используется с rtorrent). В репах его тоже, что-то не наблюдается. Пришлось искать и выдирать из RPM для OpenSUSE
ОтветитьУдалить(если что, есть на http://rpmfind.net/ называется apache2-mod_scgi(x86-64) ну или 32 в зависимости от архитектуры)
добавить в конце команды add-apt-repository ppa:ondrej/php5-oldstable
ОтветитьУдалить