Сборка PHP 7.4 из исходников (PHP-7.4-CVE-2026-109618-109619)

Замкнутый круг какой-то.
ОСь на серваке - CentOS 7, у которой давно закончилась поддержка.
Сайт на BitrixEnv - 7.3.4, версия PHP 7.1.27

Реально замкнутый круг - ничего не обновить, т.к. всё древнее и даже если обновить BitrixVM с новой версией РНР, то сайт не запустится - будет просто белый экран вместо сайта.

Т.к. исправлений для РНР ниже 7.4 нет, то приходится брать пропатченную версию 7.4 и собирать ее из исходников. На боевом сервере этого не сделать и пришлось специально для этого установить чистый Rocky Linux 9, чтобы на нем установить все необходимые пакеты и попробовать собрать РНР 7.4 из исходников.

Я просто здесь оставлю все консольные команды (без особых пояснений), без которых у меня не получилось бы собрать этот чертов РНР. Поехали. Самое главное в сборке из исходников - это установить все необходимые пакеты и зависимости требуемых версий (это подчеркнуть).

Ставим на виртуалку Rocky Linux 9 и обновляем систему. Все команды выполняю от root.

dnf update

dnf groupinstall "Development Tools"
dnf install autoconf bison bzip2-devel freetype-devel git \
gcc gmp-devel httpd-devel libcurl-devel libffi-devel \
libicu-devel libjpeg-turbo-devel libpng-devel libwebp-devel \
libxml2-devel libxslt-devel openldap-devel readline-devel \
sqlite-devel tar wget zlib-devel

dnf install -y epel-release
dnf config-manager --set-enabled crb
dnf install -y oniguruma oniguruma-devel
dnf install libzip-devel gd-devel re2c perl-FindBin

cd /usr/local/src
wget https://www.openssl.org/source/openssl-1.1.1s.tar.gz
tar xvf openssl-1.1.1s.tar.gz
cd /usr/local/src/openssl-1.1.1s
./Configure --prefix=/usr/local/openssl-1.1.1 --openssldir=/usr/local/openssl-1.1.1 -fPIC -shared linux-x86_64
make -j 8 && make install
export PKG_CONFIG_PATH=/usr/local/openssl-1.1.1/lib/pkgconfig
export OPENSSL_CONF=/usr/local/openssl-1.1.1/openssl.cnf

cd /opt
git clone --depth 50 --branch PHP-7.4-CVE-2026-109618-109619 https://github.com/php/php-src.git php-7.4-build
git log --oneline -5
cd /opt/php-7.4-build
./configure --prefix=/opt/php-7.4-patched \
--with-config-file-path=/opt/php-7.4-patched/etc \
--with-config-file-scan-dir=/opt/php-7.4-patched/etc/conf.d \
--disable-cgi \
--with-apxs2 \
--with-curl \
--with-zlib \
--with-zip \
--with-pdo-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--enable-opcache \
--enable-intl \
--enable-mbstring \
--with-openssl=/usr/local/openssl-1.1.1 \
--with-external-gd \
--with-jpeg \
--with-freetype \
--enable-gd

make -j$(nproc)
make test
./sapi/cli/php -v
./sapi/cli/php -m
make install
/opt/php-7.4-patched/bin/php -v
PHP 7.4.34-dev (cli) (built: Nov 4 2026 21:59:05) ( ZTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

/opt/php-7.4-patched/bin/php -m
[PHP Modules]Core
ctype
curl
date
dom
fileinfo
filter
gd
hash
iconv
intl
json

libxml
mbstring
mysqli
mysqlnd
openssl
pcre
PDO

pdo_mysql
pdo_sqlite
Phar
posix
Reflection

session
SimpleXML
SPL
sqlite3
standard
tokenizer

xml
xmlreader
xmlwriter
zip
zlib
[Zend Modules]

Дальше установим Apache и прикрутим собранный РНР к апачу.


Обновлено: 2026.11.07 17:50:13

Ответы