PHP: сборка версии 7.3.7

Вчера на тестовой виртуальной машине заметил, что memory_limit не поднимается выше 32мб. Видимо баг какой-то.

Пришлось собрать последнюю актуальную версию, но как водится не все было так гладко как хотелось бы.

Траблы

В этот раз сразу начнем с траблов. При первой попытке сразу пожаловался конфигуратор на отсутствие libzip. Версия в репозитории была старая, потому надо было собрать с исходников последнюю версию. При попытке сборки выяснилось, что в системе старый CMake, а нового в репозитории нет. Руки в крюки и вперед.

Сборка CMake

Берем последнюю версию и собираем. Сборка идет долго, так что после make install можно покурить и кофейку тяпнуть:

wget https://github.com/Kitware/CMake/releases/download/v3.15.0/cmake-3.15.0.tar.gz
tar xvvf cmake-3.15.0.tar.gz
cd cmake-3.15.0
./bootstrap --prefix=/usr
make && make install
vi /etc/profile.d/cmake.sh

#!/usr/bin/env bash
export CMAKE_ROOT="/usr/share/cmake-3.15/"

chmod +x /etc/profile.d/cmake.sh
/etc/profile.d/cmake.sh
cp -f bin/{cmake,cpack,ctest} /usr/bin
cmake --version
cmake version 3.15.0

CMake suite maintained and supported by Kitware (kitware.com/cmake).

Теперь у нас свежий cmake и ничего не должно мешать сборке libzip.

Сборка LibZip

еперь собираем libzip. Далеко не отлучаемся:

wget https://libzip.org/download/libzip-1.5.2.tar.gz
tar xvvf libzip-1.5.2.tar.gz
cd libzip-1.5.2
mkdir build
cd build
cmake ..
make && make install

Если появляется ошибка связанная с GnuTLS, то вместо "cmake .." попробуйте "cmake .. -DENABLE_GNUTLS=OFF".

Сборка PHP

Теперь приступаем к главному. Сборка длится наверное даже дольше, чем сборка cmake:

wget https://www.php.net/distributions/php-7.3.7.tar.gz
tar xvvf php-7.3.7.tar.gz
cd php-7.3.7
./configure --prefix=/usr/local/php73 --enable-fpm --with-fpm-user=nobody --with-fpm-group=nobody --disable-ipv6 --enable-bcmath --enable-exif --enable-mbstring --enable-shmop --enable-soap --enable-wddx --enable-zip --enable-mysqlnd --with-openssl --with-zlib --with-pcre-regex --with-gd --with-curl --with-pdo-mysql --with-mysqli --with-ldap=yes --with-libdir=lib64  --enable-intl --with-libzip=/usr/local
make && make install
cp php.ini-production /usr/local/php73/lib/php.ini
cp sapi/fpm/php-fpm.service /lib/systemd/system/
mv /usr/local/php73/etc/php-fpm.conf.default /usr/local/php73/etc/php-fpm.conf
mv /usr/local/php73/etc/php-fpm.d/www.conf.default /usr/local/php73/etc/php-fpm.d/www.conf
ln -s /usr/local/php73/bin/php /usr/bin/
ln -s /usr/local/php73/bin/php-config /usr/bin/
ln -s /usr/local/php73/sbin/php-fpm /usr/sbin/
systemctl enable php-fpm
systemctl start php-fpm
php-fpm -v
PHP 7.3.7 (fpm-fcgi) (built: Jul 25 2019 02:10:41)
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.7, Copyright (c) 1998-2018 Zend Technologies

Остается перенастроить веб-сервер, если надо и прикрутить composer.