Оновлення PHP до версії 5.6 на Ubuntu 14.04

  у розділі Технічні теми 

Якщо якийсь з серверів ще досі працює на LTS версії Ubuntu 14.04, то в офіційних пакетах до цієї системи, для PHP, доступна лише версія 5.5.9. Проте, існують модулі чи системи які хочуть новішу версію, наприклад 5.6.

В Ubuntu можна тримати декілька версій PHP одночасно. Можна запускати окремі скрипти з різними версіями і навіть мати різні версії інтерпретатора для різних віртуальних доменів веб-сервера.

Альтернативні версії доступні в репозиторії Ondřej Surý, який є співавтором і офіційних версій.

Підготовка

Перевірка наявної версії PHP:

# php -v
PHP 5.5.9-1ubuntu4.7 (cli) (built: Mar 16 2015 20:47:39)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies

Та встановлених модулів PHP:

# php -m
[PHP Modules]
bcmath
bz2
...
zip
zlib

[Zend Modules]
Zend OPcache

Встановлення нової версії

# sudo add-apt-repository ppa:ondrej/php
# sudo apt update
# sudo apt install php5.6

//sudo apt install php7.0
//sudo apt install php7.1

Встановлення модулів до нової версії

Маючи список модулів які були потрібні нам раніше можна перевірити які модулі потрібно доставити.

# php5.6 -m
[PHP Modules]
bcmath
bz2
...
Zend OPcache
zlib

[Zend Modules]
Zend OPcache

І встановити їх:

# sudo apt install php5.6-zip

Вибір версії за замовчуванням

Тепер у системі є дві версії PHP, які співіснують одночасно:

# whereis php
php: /usr/bin/php /usr/bin/php5.6 ...

І в скриптах можна вказувати конкретну назву бажаного інтерпретатора (наприклад php5.6), або вказувати повний шлях до команди.

Також, можна вказати яка версія вважається "стандартною" для системи й буде запускатися при команді php.

Якщо переглянути що приховується за командою php то стане більш зрозуміло:

# which php
/usr/bin/php

# ls -l /usr/bin/php
lrwxrwxrwx 1 root root 21 Mar 6 2015 /usr/bin/php -> /etc/alternatives/php

# ls -l /etc/alternatives/php
lrwxrwxrwx 1 root root 13 Apr 19 09:22 /etc/alternatives/php -> /usr/bin/php5

За встановлення стандартних команд, в Ubuntu, відповідає update-alternatives:

> sudo update-alternatives --list php
/usr/bin/php5
/usr/bin/php5.6

Зміна стандартного значення:

# sudo update-alternatives --set php /usr/bin/php5.6

Зміна версії PHP для Apache

Використання нової верії для веб-сервера:

# sudo a2dismod php5
# sudo a2enmod php5.6
# sudo service apache2 restart

Використання різних версій у скриптах

Якщо потрібно запустити скрипт використтовуючи певну версію можна явно запустити інтерпретатор:

# /usr/bin/php5.6 test.php

Або вказати відповідний шебанг.

test.php:

#!/usr/bin/php5.6
# Але краще так не робити — див. нижче!
<?php
    //...
?>

Проте, краще використовувати env:

# mkdir -p /usr/bin/overrides/php5.6/bin
# ln -s /usr/bin/overrides/php5.6/bin/php /usr/bin/php5.6

# export PATH="/usr/bin/overrides/php5.6/bin:$PATH"

Тоді, у скрипті поточної сесії першою знайдеться та команда php, що посилається на php5.6.

test.php:

#!/usr/bin/env php
# Пошук по $PATH поверне php з /usr/bin/overrides/php5.6/bin/php
<?php
    //...
?>

Коментарі