.
16 августа 2016

Битрик VM — установка PHP 7.0.9 вместе с PHP 5.6.24

posted in Bitrix, VM, Администрирование |

В продолжении предыдущего поста о всяческих обновлениях ...
Итак, довольно прилично подзаебавшись с обновой на PHP 5.6 я решил не махать так шашкой — а реализовать задуманное более степенно.
То есть установить PHP 7.0.9 на дублирующий сокет и потихоньку тестировать и настраивать (как выяснилось позже это была очень правильная мысль).
За основу была взята статья но не всё пошло так гладко — пришлось допиливать.

PHP 5.6 у меня уже был установлен и в режиме php-fpm так же использовался.
Сам phpbrew я установил, так же под новым юзером, и чтобы не путаться все пути оставил такие же как в статье.
Скрипт запуска у меня никак не вставал, поэтому я переделал из запуска существующего php-fpm изменив настройки на конфиги, пид и лок файлы
В www.conf я поменял и файл сокет (было listen=/tmp/php-fpm.sock стало listen=/tmp/php7-fpm.sock)

В итоге с параметрами как в статье php у меня скомпилировался и даже запустился, но как выяснилось некоторых модулей не хватило.

По идее модули ставятся без проблем командой phpbrew ext install [module name]

НО тут нужно чётко понимать, что phpbrew использует при компиляции исходники — как оказалось у меня для необходимых модулей их небыло

Модуль для MYSQL ставим как в статье!

phpbrew ext install https://github.com/php/pecl-database-mysql.git

Подробности — как обычно ищем в логах установки (где логи пишется в процессе установки), например для курла у меня логи был тут
/opt/phpbrew/.phpbrew/build/php-7.0.9/ext/curl/build.log

вот список того, что мне пришлось доустановить для компиляции phpbrew некоторых модулей
yum install libxml2
yum install libxml2-devel
yum install libxslt-devel
yum install libmcrypt-devel

а вот с установкой curl пришлось поискать подходящий репозиторий, вот инструкция
1) create a new file /etc/yum.repos.d/city-fan.repo
2) Paste the following contents:
[CityFan]
name=City Fan Repo
baseurl=http://www.city-fan.org/ftp/contrib/yum-repo/rhel$releasever/$basearch/
enabled=1
gpgcheck=0
3) type:
yum clean all
yum install curl
4) And it's done.
yum install curl-devel

phpbrew ext install curl

после всех инсталяций не забываем дёргать сервис
service php7-fpm restart (название — это имя вашего переделанного файла запуска в init.d)
так же для того чтобы сервис стартовал сам- нужно сделать симлинки в rc3.d

Ещё в www.conf для php-fpm необходимо прописать имя юзера и группы под кем запускается php7-fpm (без этого у меня не работало).
listen.owner=bitrix
listen.group=bitrix
listen.mode=666

Об одном баге (а точнее особенности) — напишу отдельно, т.к. меня она повергла в небольшой шок :)
После включения Zend Opcode Cache (у меня это был последний этап) — решил я затестировать работу на простых скриптах.
echo time (); — вывело время
echo "abc ".time (); — снова вывело время (причём в реалтайме), но без строки abc !!!
То есть динамический вывод работал, а то что поменялось практически в статике — нет (хотя этот тоже динамика, но без функций).
В общем немного потупив, дошло, что трабла в оптимизаторе, а точнее в настройке параметра opcache.revalidate_freq=60
Т.е. после изменения файла должно пройти 60 секунд, прежде чем интерпретатор его обновит в кэше (если конечно он был кэширован ранее).
На нужный домен (где идёт разработка) можно в php.ini секцией задать свои значения

[HOST=dev.site.com]
opcache.revalidate_freq = 0

Так же смотрим на удалённые функции из интерпретатора https://wiki.php.net/rfc/remove_deprecated_functionality_in_php7 заменяем их правильными аналогами

Вроде на этом вроде всё!

P.S.
Чуток я разочаровался по приросту быстродействию и потреблению ресурсов, но оно для моего проекта объяснимо — слишком он простой :)

Яндекс.Метрика