среда, 5 декабря 2012 г.

Замена PHP 5.3 на PHP 5.4 на Ubuntu 12.04 LBS

Наверняка многие, установив 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

Рассудив здраво, решил с 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

Вуа-ля, пользуйтесь :)

11 комментариев:

  1. Стараюсь сначала смотреть в офф репы по новым версиям. Например:

    http://packages.ubuntu.com/search?keywords=php5&searchon=names&suite=all&section=all

    Подключаем реп с нужной версией, инсталим, отключаем:)
    Но, если PPA довуряем, то можео и оттуда.

    ОтветитьУдалить
  2. Уже, конечно, этот пост неактуален, ибо 5.4 уже в основном репозитории :)

    Однако я опирался на "рекомендации лучших собаководов", поэтому и не стал ничего другого искать, сразу подключил этот PPA. О чем не жалел :) Я всего лишь описал подводные камни, появившиеся у меня на пути.

    Но Ваш метод, безусловно, идеален - в том случае, если прокладка между креслом и монитором достаточно продвинута ;)

    ОтветитьУдалить
  3. http://www.dotdeb.org/instructions/

    ОтветитьУдалить
  4. Slava: dotdeb.org для Debian под Ubuntu оно то работать будет но я бы не советовал и там версия PHP устаревшая

    ОтветитьУдалить
  5. Если кому нужен PHP 5.4.12-amd64 для Debian 7 Wheezy x64 могу поделиться. Или кто знает куда можно залить пакеты для Debian буду очень признателен.

    ОтветитьУдалить
  6. Анонимный20.11.2013, 02:47

    обещали php 5.4 ... получилось php 5.5 ))

    ОтветитьУдалить
    Ответы
    1. дык почти год прошел :)

      Удалить
    2. Анонимный13.08.2014, 16:20

      я тоже 5.5 получил :) Автор что-то ты не то написал ))

      Удалить
  7. Этот комментарий был удален автором.

    ОтветитьУдалить
  8. Анонимный06.02.2014, 15:55

    Еще немного о граблях: в Apache 2.4 нету модуля mod_scgi.so (который, например, используется с rtorrent). В репах его тоже, что-то не наблюдается. Пришлось искать и выдирать из RPM для OpenSUSE
    (если что, есть на http://rpmfind.net/ называется apache2-mod_scgi(x86-64) ну или 32 в зависимости от архитектуры)

    ОтветитьУдалить
  9. Анонимный22.02.2017, 12:38

    добавить в конце команды add-apt-repository ppa:ondrej/php5-oldstable

    ОтветитьУдалить