Скрипты и плагины сайтов часто требуют для своей работы установленные расширения PHP (от англ. Hypertext Preprocessor – препроцессор гипертекста). Однако на виртуальном хостинге необходимые расширения могут быть либо не установлены, либо недоступны для определенной версии PHP.
В этой статье мы расскажем, как вы можете проверить список доступных расширений для выбранной версии PHP, а также как установить нужное расширение PHP, если оно отсутствует. Для примера мы установим расширения Xdebug, APCu и sqlsrv.
Подключение к аккаунту
Для сборки расширения либо проверки его наличия сначала необходимо подключиться к аккаунту. Вы можете подключиться либо с помощью SSH (от англ. Secure SHell – защищенная оболочка) по пошаговой инструкции, либо использовать терминал в панели управления.
После подключения нужно перейти в специальный виртуальный контейнер на сервере (Docker), где доступны права на компиляцию. Для этого следует использовать следующую команду:
$ ssh localhost -p222Затем введите пароль. Он такой же, как и для доступа к аккаунту.
betutorial@localhost's password:
Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 5.10.161-1-beget-acl-test x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro
(docker) betutorial@dragon:~ [0] $
Просмотр установленных расширений
Обратите внимание: некоторые расширения установлены, но не включены в стандартной конфигурации. Список всех доступных расширений вы можете получить при помощи команды:
$ ll /usr/local/php-cgi/X.X/lib/php/2*Вместо X.X укажите версию PHP, которую использует ваш сайт.
Для подключения расширения из данного списка для режима CGI (стандарт взаимодействия веб-сервера с внешними программами) необходимо добавить строку в файл php.ini, находящийся в директории cgi-bin в public_html:
extension=<МОДУЛЬ>.soВключение режима CGI
Для успешного использования собранных вручную расширений сайт должен работать в режиме CGI.
Переключить PHP в режим CGI вы можете самостоятельно в разделе “Сайты” вашей панели управления. Для этого нажмите на иконку
в строке с именем сайта:

Для включения режима CGI достаточно активировать соответствующую опцию:

При необходимости вы также можете изменить версию PHP.
Сборка Xdebug
После входа в Docker и активации режима CGI перейдем к сборке расширения.
Ниже будет рассмотрена компиляция Xdebug для PHP 8.3. При желании можно скомпилировать для любой версии PHP, в зависимости от того, на какой из них работает сайт.
Перейдите в каталог cgi-bin для нужного сайта:
$ cd ~/betutorial.ru/public_html/cgi-bin/Далее скачайте исходный код Xdebug с официального сайта:
$ wget https://xdebug.org/files/xdebug-3.5.0.tgzНа текущий момент последняя версия Xdebug 3.5.0, скачать последнюю версию можно с официального сайта.
Далее нужно распаковать архив и перейти в распакованный каталог:
$ tar xfv xdebug-3.5.0.tgz; cd xdebug-3.5.0/Окружение для PHP-расширения подготавливается командой phpize. Вместо символов X.X укажите версию PHP вашего сайта.
/usr/local/php-cgi/X.X/bin/phpizeВ нашем случае – 8.3:
$ /usr/local/php-cgi/8.3/bin/phpize
Configuring for:
PHP Api Version: 20230831
Zend Module Api No: 20230831
Zend Extension Api No: 420230831Утилитой configure настраиваются все зависимости, префиксы и переменные, после чего генерируется Makefile. По аналогии с предыдущим пунктом укажите версию PHP сайта:
$ ./configure --with-php-config=/usr/local/php-cgi/8.3/bin/php-config
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
configure: creating ./config.status
config.status: creating config.h
Затем нужно скомпилировать Xdebug из исходного кода:
$ make -j$((`nproc`/4))После удачного выполнения команды make в каталоге modules можно увидеть готовый модуль:
$ ls modules/
xdebug.soНужно скопировать его в каталог cgi-bin, в нашем случае – сайта betutorial.ru:
$ cp modules/xdebug.so ~/betutorial.ru/public_html/cgi-bin/После чего перейдите в этот каталог:
$ cd ~/betutorial.ru/public_html/cgi-bin/Следующая команда включит расширение в файле php.ini:
$ echo "zend_extension = $(pwd)/xdebug.so" >> php.iniДальше нужно проверить, что расширение подключилось корректно. Для этого следует добавить в корень сайта файл x.php со следующим содержимым:
<?php phpinfo();И нужно обратиться к нему через браузер, ссылка будет выглядеть следующим образом: http://domain.com/x.php

Расширение установлено и активировано.
Сборка APCu
После входа в Docker и активации режима CGI перейдем к сборке расширения.
Ниже будет рассмотрена компиляция APCu для PHP 8.3. При желании можно скомпилировать для любой версии PHP, в зависимости от того, на какой из них работает сайт.
Перейдите в каталог cgi-bin для нужного сайта:
$ cd ~/betutorial.ru/public_html/cgi-bin/Далее скачайте исходный код APCu с официального сайта:
$ wget https://pecl.php.net/get/apcu-5.1.28.tgzНа текущий момент последняя версия APCu 5.1.28, скачать последнюю версию можно с официального сайта.
Далее следует распаковать архив и перейти в распакованный каталог:
$ tar xfv apcu-5.1.28.tgz; cd apcu-5.1.28Окружение для PHP-расширения подготавливается командой phpize. Вместо символов X.X укажите версию PHP вашего сайта.
$ /usr/local/php-cgi/X.X/bin/phpizeВ нашем случае – 8.3:
$ /usr/local/php-cgi/8.3/bin/phpize
Configuring for:
PHP Api Version: 20230831
Zend Module Api No: 20230831
Zend Extension Api No: 420230831Утилитой configure настраиваются все зависимости, префиксы и переменные, после чего генерируется Makefile. По аналогии с предыдущим пунктом укажите версию PHP сайта:
$ ./configure --with-php-config=/usr/local/php-cgi/8.3/bin/php-config
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
...
configure: creating ./config.status
config.status: creating config.hЗатем нужно скомпилировать Xdebug из исходного кода:
$ make -j$((`nproc`/4))После удачного выполнения команды make в каталоге modules можно увидеть готовый модуль:
$ ls modules/
apcu.soНужно скопировать его в каталог cgi-bin, в нашем случае – сайта betutorial.ru:
$ cp modules/apcu.so ~/betutorial.ru/public_html/cgi-bin/После чего перейдите в этот каталог:
$ cd ~/betutorial.ru/public_html/cgi-bin/Следующая команда включит расширение в файле php.ini:
$ echo "extension = $(pwd)/apcu.so" >> php.iniДальше нужно проверить, что расширение подключилось корректно. Для этого следует добавить в корень сайта файл x.php со следующим содержимым:
<?php phpinfo();И нужно обратиться к нему через браузер, ссылка будет выглядеть следующим образом: http://domain.com/x.php

Расширение установлено и активировано.
Подключение sqlsrv
В отличие от предыдущих расширений, мы не будем компилировать sqlsrv, а установим бинарный файл из репозитория Microsoft.
Перейдите в каталог cgi-bin для нужного сайта:
$ cd ~/betutorial.ru/public_html/cgi-bin/Далее скачайте желаемый релиз, мы загрузим актуальную версию:
$ wget https://github.com/microsoft/msphpsql/releases/download/v5.12.0/Linux_5.12.0RTW.tar.gzНа текущий момент последняя версия sqlsrv 5.12, скачать последнюю версию можно из репозитория.
Далее нужно распаковать архив и перейти в распакованный каталог:
$ tar xfv Linux_5.12.0RTW.tar.gz; cd Linux/Найдите бинарный файл, предназначенный для версии PHP вашего сайта, и переименуйте его:
$ mv SQLSRV_8.3_NTS.so sqlsrv.soПереместите расширение в каталог cgi-bin, в нашем случае – сайта betutorial.ru:
$ cp sqlsrv.so ~/betutorial.ru/public_html/cgi-bin/После чего перейдите в этот каталог:
$ cd ~/betutorial.ru/public_html/cgi-bin/Следующая команда включит расширение в файле php.ini:
$ echo "extension = $(pwd)/sqlsrv.so" >> php.iniДальше нужно проверить, что расширение подключилось корректно. Для этого следует добавить в корень сайта файл x.php со следующим содержимым:
<?php phpinfo();И нужно обратиться к нему через браузер, ссылка будет выглядеть следующим образом: http://domain.com/x.php

Расширение установлено и активировано.
Резюмируя, сейчас, когда PHP удерживает 73,6% рынка веб-разработки, компиляция и настройка PHP-расширений позволяют гибко адаптировать среду под конкретные задачи – например, подключить редкий драйвер для базы данных или оптимизировать код для высокой нагрузки.
Если возникнут вопросы, напишите нам, пожалуйста, обращение в панели управления аккаунта (раздел “Помощь и поддержка”), а если вы захотите обсудить настройку PHP на сервере или наши продукты с коллегами по цеху и сотрудниками Beget – ждем вас в нашем сообществе в Telegram.