Menu

Установка PHP 5.6 на CentOS через Yum

PHP версии 5.6.2 была анонсирована на официальном сайте разработчика второго октября 2014 и уже доступна для CentOS/RHEL 6.5 или 7.0 на Webtatic, причём можно пользоваться Yum!

Уже была опубликована статья об установке свежей версии PHP, но сейчас мы поднимем версию ещё выше.

В PHP 5.6 добавлены следующие функции:

  • Постоянные скалярные выражения
  • Функции с переменным числом аргументов
  • Распаковка независимых переменных
  • Возведение в степень операторов
  • Поддержка больших (>2ГБ) файлов загрузки
  • Улучшения SSL/TLS, включая одноранговую проверку по умолчанию
  • Новый отладчик командной строки, под названием phpdbg

Перед установкой нам понадобится добавить репозиторий (хранилище пакетов) WebtaticEL, соответствующее вашей версии CentOS/RHEL в yum:

CentOS/RHEL 7.x:

rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

CentOS/RHEL 6.x:

rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm

Теперь можно установить PHP 5.6 (вместе с кэшером операционного кода), для установки запустим yum со следующими параметрами:

yum install -y php56w php56w-opcache

Если вам нужно обновить php до данной версии, рекомендуется сначала проверить, поддерживает ли ваша система установку обновления, например попробовать запустить специализированное ПО типа CPanel после обновления.

Даже если вы отдаёте отчет своим действиям, рискованно обновлять существующую систему. Безопаснее будет установить обновление на чистый сервер.

Если вы уверены в том, что делаете, то можно обновить PHP, запустив yum со следующими параметрами:

yum install -y yum-plugin-replace
yum replace --enablerepo=webtatic-testing php-common --replace-with=php56w-common

Вероятнее всего у вас появится сообщение типа “WARNING: Unable to resolve all providers …”. Это нормально, продолжить можно нажав “y“. Затем вы увидите какие пакеты будут установлены и заменены перед тем, как подтвердить установку.

SAPIs – различные модули

  • mod_php NTS (непотоковая безопасность) ‒ содержится в пакете php56w, данная SAPIвходит в состав ApacheHttpd 2.2 и представляет собой стандартное SAPI для использования с httpd prefork mpm (режим по умолчанию httpd). Данное SAPI не использует потоковую безопасность, так как здесь не применяются потоки. Адрес расположения: /usr/lib[64]/httpd/modules/libphp5.so
  • cli ‒ Содержится в пакете php56w-cli, данное SAPI позволяет запускать скрипты с командной строки, так же в состав входит встроенный веб-сервер для расширенного использования. Адрес расположения: /usr/bin/php
  • fpm ‒ содержится в пакете php56w-fpm, fpm (диспетчер процессов FastCGI) варьируемый процессFastCGI, работающий аналогично Httpd preforkmpm, который управляет разветвлением. Адрес расположения: /usr/sbin/php-fpm, контролируется с помощью служебного скрипта /etc/init.d/php-fpm
  • phpdbg ‒ содержится в пакете php56w-phpdbg, phpdbg имеет возможность отладки скриптов, используя контрольные точки из командной строки, также phpdbg имеет возможность удалённой отладки при помощи внешнего Java-клиента для удалённой коммуникации.
  • Embedded ‒ содержится в пакете php56w-embedded, данноеSAPIпозволяет встраивать PHPв другие приложения.Библиотека Embedded расположена по адресу:/usr/lib[64]/libphp5.so
  • cgi, fastcgi ‒ содержится в пакете php56w-cli, данные SAPI не рекомендованы к использованию, но при необходимости могут быть использованы. Данные SAPI существуют в двоичном коде и находятся по адресу: /usr/bin/php-cgi.
  • mod_phpTS (Потоковая безопасность) ‒ содержится в пакете php56w, данное SAPIвходит в состав ApacheHttpd 2.2. Это стандартноеSAPI для использования с httpdworkermpm. Предполагается, что данное SAPI поддерживает потоковую безопасность, но это необязательно так, особенно при использовании дополнительных расширений PHP. Лучше использовать FastCGISAPI. Адрес расположения: /usr/lib[64]/httpd/modules/libphp5-zts.so.

Opcode Cache

В дистрибутив PHP теперь входит opcode cache ZendOptimizer+, который теперь называется расширение ZendOPcache. Это дополнение необязательно, вы можете выбрать любое другое, на ваше усмотрение.

Поскольку данное дополнение входит в состав исходного дистрибутива PHP, то оно поддерживается разработчиком и удобно для использования, в отличии от других Opcodecache, обновляемых в течении ближайших месяцев.

Для установки запустим yum со следующими параметрами:

yum install -y php56w-opcache

Сообщение об ошибке E_ALL теперь включает E_STRICT

Вы можете получить намного больше ошибок в протоколах ошибок, если по умолчанию error_reporting установлена E_ALL, без отключения отключения E_STRICT. По умолчаниюphp.ini, который поставляется в PHP-пакете отключает E_STRICT,но если вы обновляете существующую установку, ваш php.ini не может быть обновлен, а это означает, что вероятно E_STRICT будет включен.

Автоматизация обновления

Обновление в кратчайшие сроки путем запуска одной строчки:

service mysqld stop && service nginx stop && service httpd stop && yum erase php54 php54-gd  php54-imap php54-pdo php54-mysql php54-xml php54-common php54-process php54-mbstring  php54-cli php54-ldap -y && yum install php56w php56w-gd  php56w-imap php56w-pdo php56w-mysql php56w-xml php56w-common php56w-process php56w-mbstring  php56w-cli php56w-ldap php56w-devel -y && service mysqld start && service nginx start && service httpd start

12 комментарии

  • maks

    написал maks

    Понедельник, 22 Июнь 2015 00:40

    Спасибо :)

    Пожаловаться
  • xox

    написал xox

    Понедельник, 14 Март 2016 14:51

    Спасибо большое, все быстро и понятно. А то целый вечер мучил сервак, не мог обновить по другим инструкциям. Кучу перелопатил...

    Пожаловаться
  • Алекс

    написал Алекс

    Понедельник, 25 Июль 2016 16:21

    спасибо. помогло

    Пожаловаться
  • santosha

    написал santosha

    Вторник, 09 Август 2016 14:07

    Работает!

    Пожаловаться
  • ProgonMox

    написал ProgonMox

    Пятница, 23 Декабрь 2016 00:17

    Спасибо, грамотная подсказка.

    Пожаловаться
  • Сергей

    написал Сергей

    Воскресенье, 25 Декабрь 2016 02:43

    php -v
    -bash: php: команда не найдена
    [root@ovz1 ~]# php -version
    -bash: php: команда не найдена
    [root@ovz1 ~]# php --v
    -bash: php: команда не найдена
    [root@ovz1 ~]#
    Хоть и нету этого , но добротно, солидно. Чувствуется подготовка. Но на каждый случай своё. С уважением. Спасибо. Сергей.

    Пожаловаться
  • Vasiliy

    написал Vasiliy

    Суббота, 14 Январь 2017 16:19

    Здравствуйте я обновил php на чистом сервере centos 6 дальше запустил установку isp manager он ставиться но никак не ставиться mysql база данных не работает в isp manager! что нужно сделать для того что бы заработало! Дайте совет пожалуйста!

    Вот код ошибки:

    Error: mysql55w-libs conflicts with mysql-libs-5.1.73-7.el6.x86_64
    You could try using --skip-broken to work around the problem
    You could try running: rpm -Va --nofiles --nodigest

    Пожаловаться
  • Анатолий

    написал Анатолий

    Среда, 18 Январь 2017 21:30

    Vasiliy, вам надо определиться, Вы ставите mysql55w или mysql? Очевидно, что уже установлен mysql (ну или ошмётки от него остались), а Вы пытаетесь сверху накатить альтернативный mysql55w.

    yum erase mysql-libs

    А дальше - по обстоятельствам.

    Пожаловаться
  • Julio

    написал Julio

    Суббота, 22 Апрель 2017 15:21

    Если вы хотели бы обновить PHP до этой версии рекомендуется проверить поддержку для вашей системы и убедиться что она будет поддерживать обновление. Если вы не знаете, что вы делаете, это рискованная модернизации существующей системы. Гораздо безопаснее выполнить инициализацию на отдельном сервере и посмотреть работу.

    Пожаловаться
  • Guemsesy

    написал Guemsesy

    Четверг, 01 Февраль 2018 07:17

    Спасибо за отличную подсказку!

    Пожаловаться
  • RobertPiorm

    написал RobertPiorm

    Воскресенье, 22 Апрель 2018 22:43

    Я ещё такого не встречал! Это круто!!

    Пожаловаться
  • Andrey Golubtum

    написал Andrey Golubtum

    Суббота, 23 Июнь 2018 18:22

    You may get a lot more errors coming out of your error logs if by default your error_reporting is set to E_ALL now without explicitly turning off E_STRICT. The default php.ini that comes with the PHP package turns this off by default, but if you are upgrading from an existing installation, your php.ini may not be updated, meaning this will likely be turned on.

    Пожаловаться
Авторизуйтесь, чтобы получить возможность оставлять комментарии
Go to top