пятница, 29 сентября 2017 г.

Установка двух версий PHP на сервер CentOS.

Установка двух версий PHP на сервер CentOS.

На сервере CentOS7 по умолчанию после выполнения команды yum install php
будет установлен php версии 5.4
# php -v
PHP 5.4.16 (cli) (built: Nov  6 2016 00:29:02)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies

Установим еще одну версию php. Версию 7.

Устанавливаем дополнительные пакеты:
# yum install gcc make
# yum install libxml2-devel
# yum install mysql-devel httpd-devel gd-devel libmcrypt-devel mcrypt bison-devel mhash-devel libcurl-devel
# yum install bison

Скачиваем исходный код php7 с GIT 
# cd /usr/src/
# git clone https://github.com/php/php-src.git
# cd php-src/

Выполняем сборку конфигуратора:
# ./buildconf --force 
При этом может быть ошибка:
buildconf: checking installation...
buildconf: autoconf version 2.63 found.
           You need autoconf version 2.64 or newer installed
           to build PHP from Git.
make: *** [buildmk.stamp] Ошибка 1
Ошибка говорит о том, что нужно обновить autoconf
# wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
# tar xvfvz autoconf-2.69.tar.gz
# cd autoconf-2.69
# ./configure
# make
# make install
Новая версия установилась в /usr/local/bin/autoconf, тогда как текущая версия находиться в директории /usr/bin/

# ./buildconf --force
Нормальный вывод:
buildconf: checking installation...
buildconf: autoconf version 2.69 (ok)
rebuilding aclocal.m4
rebuilding configure
rebuilding main/php_config.h.in
Или:
#  ./buildconf --force
Forcing buildconf
Removing configure caches

Проводим конфигурирование:
# ./configure --bindir=/usr/local/bin/ --with-config-file-path=/usr/local/etc/ --with-curl --with-mhash --with-mysqli --with-gd --with-pdo-mysql  --enable-mbstring --with-openssl --with-pcre-regex --enable-soap --with-apxs2 --with-zlib
Здесь директория для бинарника - /usr/local/bin/
Директория для поиска конфигурационных файлов (php.ini) - /usr/local/etc/

Компилируем и устанавливаем:
# make
# make test
На следующий вопрос с предложением отправить отчет об ошибках отвечаем «n»
You may have found a problem in PHP.
This report can be automatically sent to the PHP QA team at
http://qa.php.net/reports and http://news.php.net/php.qa.reports
This gives us a better understanding of PHP's behavior.
If you don't want to send the report immediately you can choose
option "s" to save it.  You can then email it to qa-reports@lists.php.net later.
Do you want to send this report now? [Yns]: n
# make install

Подготавливаем файл php.ini
# cp /usr/src/php-src/php.ini-production /usr/local/etc/php.ini

Теперь можно использовать php7 запуская его с указанием полного пути:
# /usr/local/bin/php -v
PHP 7.3.0-dev (cli) (built: Sep 22 2017 12:52:17) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.3.0-dev, Copyright (c) 1998-2017 Zend Technologies