В Windows есть два способа загрузки PHP-модуля: скомпилировать
его вместе с PHP или загрузить DLL. Загрузка заранее
скомпилированного модуля является наиболее простым и предпочитаемым
способом.
Для загрузки модуля, он должен присутствовать в вашей
системе в виде “.dll” файла.
Все модули автоматически и периодически компилируются командой
PHP (смотрите следующий раздел для загрузки).
За инструкциями по компиляции модуля в PHP обратитесь к
разделу “Сборка из
исходников”.
Для компиляции отдельного модуля (или DLL-файла), обратитесь
к разделу ”
Сборка из исходников”. Если DLL-файла нет ни в стандартной поставке
PHP ни в PECL, возможно, вам придётся скомпилировать его вручную.
Где найти модуль?
PHP-модули обычно имеют имена вида “php_*.dll” (где звёздочка обозначает
имя модуля) и располагаются в папке “PHPext”.
PHP поставляет модули наиболее полезные большинству разработчиков. Такие
модули называются “основными” (“core”).
Однако, если вам требуется функционал, который не предоставляется
ни одним из основных модулей, возможно, нужный вам модуль есть
в » PECL. Библиотека модулей сообщества PHP
(The PHP Extension Community Library, PECL) является
хранилищем модулей PHP, предоставляя каталог и хостинг
всех известных модулей для скачки и дальнейшей разработки
модулей в PHP.
Если вы разработали какой-либо модуль для собственных нужд,
возможно, вы захотите хранить его в PECL, так, чтобы другие также
могли воспользоваться результатами вашего труда. Хорошим побочным
эффектом будет неплохой шанс получить обратную связь,
благодарности (надеемся, что так и будет), сообщения об ошибках
и даже исправления/патчи. Пожалуйста, прочтите » публикация PECL;
перед отправкой вашего модуля в PECL.
Какой модуль нужно загрузить?
Очень часто существует несколько версий модуля DLL:
-
Различные номера версий (по крайней мере первые два числа должны совпадать)
-
Различные настройки потокобезопасности
-
Различная архитектура процессора (x86, x64, …)
-
Различные настройки отладки
-
и т.д.
Помните, что настройки ваших модулей должны совпадать со
всеми настройками используемого вами бинарного файла PHP.
Следующий PHP-скрипт выведет вам все
настройки PHP:
Или запустите из командной строки:
drive:\pathtophpexecutablephp.exe -i
Загрузка модуля
Наиболее распространённым способом загрузки PHP-модуля
является его включение в конфигурационном файле php.ini.
Обратите внимание, что большинство модулей уже прописаны
в вашем php.ini и для их активации вам
просто нужно удалить точку с запятой.
Обратите внимание, что в PHP 7.2.0 и выше для указания модуля можно использовать
не имя файла библиотеки, а название самого модуля. Данный подход рекомендуется
для использования, так как он более простой и платформонезависимый. Однако вы
всё ещё можете прямо указывать имя файла модуля.
;extension=php_extname.dll
extension=php_extname.dll
; В PHP 7.2 и выше лучше делать так: extension=extname zend_extension=another_extension
Однако, некоторые веб-серверы создают путаницу, т.к. они не
используют php.ini, расположенный
в дистрибутиве PHP, а используют свой собственный.
Узнать, где находится, используемый сервером php.ini,
можно посмотрев на выводимый путь в phpinfo():
Configuration File (php.ini) Path C:WINDOWS
Loaded Configuration File C:Program FilesPHP5.2php.ini
После активации модуля сохраните php.ini, перезагрузите веб-сервер
и снова проверьте phpinfo(), в нем должен
появиться отдельный раздел с новым модулем.
Решение проблем
Если модуль не появился в выводе phpinfo(),
проверьте лог-файлы на наличие сообщений об ошибках.
Если вы используете PHP в командной строке (CLI), ошибки загрузки
модуля будут доступны сразу же на экране.
Если вы используете PHP на веб-сервере, расположение и формат
лог-файлов сильно зависит от используемого вами веб-сервера.
Пожалуйста, обратитесь к документации вашего веб-сервера, т.к.
в данном случае эта ситуация не управляется самим PHP.
Распространёнными проблемами являются расположение библиотеки DLL и DLL-файлов,
от которых она зависит, значение ”
extension_dir” в php.ini, а также
несовпадение настроек компиляции.
Если проблемой является несовпадение настроек компиляции, то
возможно, вы скачали не тот DLL-файл. Попробуйте снова скачать
модуль, на этот раз с правильными настройками. Ещё раз,
информация функции phpinfo() сильно помогает
в этом случае.
ferdnyc at gmail dot com ¶
8 months ago
This is handwaved somewhat in the "Resolving problems" section, but mis-location of (non-extension) DLL files is often a problem when installing PHP extensions on Windows.
Many PHP extensions come with not only the extension DLL, but supplementary DLLs that are required by that extension. (For example, php_luasandbox.dll comes with lua5.1.dll, the lua interpreter it sandboxes.) Those other DLLs should go into the same directory as the php.exe binary, NOT the extension directory.
So, if php_luasandbox.dll is installed at C:PHP8.1extphp_luasandbox.dll, the interpreter would be located at C:PHP8.1lua5.1.dll. That allows the PHP binary C:PHP8.1php.exe to find those additional DLLs when required.
dario at 4assistance dot com ¶
4 months ago
On windows, drop your extension's dependencies into a dir of your choice, but outside of your php install. Add that dir to a path environment variable used by your php. Add <extension_name>.dll to your php's extension_dir, and update your php.ini (unless you're simply testing with php's cli).
bk at kaelberer-aio dot de ¶
3 months ago
In addition to the helpful comments of ferdnyc and dario: A few weeks ago I've set up a new W11 using PHP 8.1. (as a module) with Apache. It was working fine.
Today i wanted to install the PECL-extension php-amqp. This extension comes with two additional files that are said to be placed in PHPs main directory. It worked fine running from the command prompt but with Apache the extension failed with "Unable to load dynamic library 'amqp'".
I tried 100 ways to notate paths in php.ini and http.conf: c:, C:, , \, /, ". I also installed a new PHP in the root to get rid of the space in the path. It did not help.
When reading dario's comment i stumbeled across him mentioning "path environment variable". I checked that in Window's settings and I realized, that i had added PHP's path to the USER'S path-settings, but not to the SYSTEM'S path. That is why it worked in the command prompt but not when starting Apache as a service. After adding it there it worked fine.
В Windows есть два способа загрузки PHP-расширения: скомпилировать
его вместе с PHP или загрузить DLL. Загрузка заранее
скомпилированного расширения является наиболее простым и предпочитаемым
способом.
Для загрузки расширения, оно должно присутствовать на вашей
системе в виде “.dll” файла.
Все расширения автоматически и периодически компилируются командой
PHP (см. следующий раздел для загрузки).
За инструкциями по компиляции расширения в PHP обратитесь к
разделу “Сборка из
исходников”.
Для компиляции отдельного расширения (или DLL-файла), обратитесь
к разделу ”
Сборка из исходников”. Если DLL-файла нет ни в стандартной поставке
PHP ни в PECL, возможно, вам придется скомпилировать его вручную.
Где найти расширение?
PHP-расширения обычно имеют имена вида “php_*.dll” (где звездочка обозначает
имя расширения) и располагаются в папке “PHPext”.
PHP поставляет расширения наиболее полезные большинству разработчиков. Такие
расширения называются “основными” (“core”).
Однако, если вам требуется функционал, который не предоставляется
ни одним из основных расширений, возможно, нужное вам расширение есть
в PECL. Библиотека расширений сообщества PHP
(The PHP Extension Community Library, PECL) является
хранилищем расширений PHP, предоставляя каталог и хостинг
всех известных расширений для скачки и дальнейшей разработки
расширений в PHP.
Если вы разработали какое-либо расширение для собственных нужд,
возможно, вы захотите хранить его в PECL, так, чтобы другие также
могли воспользоваться результатами вашего труда. Хорошим побочным
эффектом будет неплохой шанс получить обратную связь,
благодарности (надеемся, что так и будет), сообщения об ошибках
и даже исправления/патчи. Пожалуйста, прочтите » публикация PECL;
перед отправкой вашего расширения в PECL.
Какое расширение нужно загрузить?
Очень часто существует несколько версий расширения DLL:
-
Различные номера версий (по крайней мере первые два числа должны совпадать)
-
Различные настройки потокобезопасности
-
Различная архитектура процессора (x86, x64, …)
-
Различные настройки отладки
-
и т.д.
Помните, что настройки ваших расширений должны совпадать со
всеми настройками используемого вами бинарного файла PHP.
Следующий PHP-скрипт выведет вам все
настройки PHP:
Или запустите из командной строки:
drive:\pathtophpexecutablephp.exe -i
Загрузка расширения
Наиболее распространенным способом загрузки PHP-расширения
является его включение в конфигурационном файле php.ini.
Обратите внимание, что большинство расширений уже прописаны
в вашем php.ini и для их активации вам
просто нужно удалить точку с запятой.
;extension=php_extname.dll
extension=php_extname.dll
Однако, некоторые веб-серверы создают путаницу, т.к. они не
используют php.ini, расположенный
в дистрибутиве PHP, а используют свой собственный.
Узнать, где находится используемый сервером php.ini,
можно посмотрев на выводимый путь в phpinfo():
Configuration File (php.ini) Path C:WINDOWS
Loaded Configuration File C:Program FilesPHP5.2php.ini
После активации расширения сохраните php.ini, перезагрузите веб-сервер
и снова проверьте phpinfo(), в нем должен
появиться отдельный раздел с новым расширением.
Решение проблем
Если расширение не появилось в выводе phpinfo(),
проверьте лог-файлы на наличие сообщений об ошибках.
Если вы используете PHP в командной строке (CLI), ошибки загрузки
расширения будут доступны сразу же на экране.
Если вы используете PHP на веб-сервере, расположение и формат
лог-файлов сильно зависит от используемого вами веб-сервера.
Пожалуйста, обратитесь к документации вашего веб-сервера, т.к.
в данном случае эта ситуация не управляется самим PHP.
Частой проблемой является расположение DLL-файлов, значение ”
extension_dir” в php.ini, а также
несовпадение настроек компиляции.
Если проблемой является несовпадение настроек компиляции, то
возможно, вы скачали не тот DLL-файл. Попробуйте снова скачать
расширение, на этот раз с правильными настройками. Еще раз,
информация функции phpinfo() сильно помогает
в этом случае.
Вернуться к: Установка расширений PECL
Поиск модулей PHP, которые могут быть установлены или уже были установлены:
$ apt search --names-only php | grep ^php7 php7.2/bionic-updates,bionic-updates,bionic-security,bionic-security 7.2.24-0ubuntu0.18.04.1 all php7.2-bcmath/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.1 amd64 php7.2-bz2/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.1 amd64 php7.2-cgi/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.1 amd64 php7.2-cli/bionic-updates,bionic-security,now 7.2.24-0ubuntu0.18.04.1 amd64 [установлен, автоматически] php7.2-common/bionic-updates,bionic-security,now 7.2.24-0ubuntu0.18.04.1 amd64 [установлен, автоматически] php7.2-curl/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.1 amd64 php7.2-dba/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.1 amd64 php7.2-dev/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.1 amd64 php7.2-enchant/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.1 amd64 php7.2-fpm/bionic-updates,bionic-security,now 7.2.24-0ubuntu0.18.04.1 amd64 [установлен] php7.2-gd/bionic-updates,bionic-security,now 7.2.24-0ubuntu0.18.04.1 amd64 php7.2-gmp/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.1 amd64 php7.2-imap/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.1 amd64 php7.2-interbase/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.1 amd64 php7.2-intl/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.1 amd64 php7.2-json/bionic-updates,bionic-security,now 7.2.24-0ubuntu0.18.04.1 amd64 [установлен, автоматически] php7.2-ldap/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.1 amd64 php7.2-mbstring/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.1 amd64 php7.2-mysql/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.1 amd64 php7.2-odbc/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.1 amd64 php7.2-opcache/bionic-updates,bionic-security,now 7.2.24-0ubuntu0.18.04.1 amd64 [установлен, автоматически] php7.2-pgsql/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.1 amd64 php7.2-phpdbg/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.1 amd64 php7.2-pspell/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.1 amd64 php7.2-readline/bionic-updates,bionic-security,now 7.2.24-0ubuntu0.18.04.1 amd64 [установлен, автоматически] php7.2-recode/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.1 amd64 php7.2-snmp/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.1 amd64 php7.2-soap/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.1 amd64 php7.2-sqlite3/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.1 amd64 php7.2-sybase/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.1 amd64 php7.2-tidy/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.1 amd64 php7.2-xml/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.1 amd64 php7.2-xmlrpc/bionic-updates,bionic-security 7.2.24-0ubuntu0.18.04.1 amd64 php7.2-xsl/bionic-updates,bionic-updates,bionic-security,bionic-security 7.2.24-0ubuntu0.18.04.1 all php7.2-zip/bionic-updates,bionic-security,now 7.2.24-0ubuntu0.18.04.1 amd64
Устанавливаем два модуля PHP — php7.2-gd
и php7.2-zip
$ sudo apt install php7.2-gd php7.2-zip
Смотрим, какие модули PHP сейчас уже установлены:
$ apt list --installed | grep ^php7 php7.2-cli/bionic-updates,bionic-security,now 7.2.24-0ubuntu0.18.04.1 amd64 [установлен, автоматически] php7.2-common/bionic-updates,bionic-security,now 7.2.24-0ubuntu0.18.04.1 amd64 [установлен, автоматически] php7.2-fpm/bionic-updates,bionic-security,now 7.2.24-0ubuntu0.18.04.1 amd64 [установлен] php7.2-gd/bionic-updates,bionic-security,now 7.2.24-0ubuntu0.18.04.1 amd64 [установлен] php7.2-json/bionic-updates,bionic-security,now 7.2.24-0ubuntu0.18.04.1 amd64 [установлен, автоматически] php7.2-opcache/bionic-updates,bionic-security,now 7.2.24-0ubuntu0.18.04.1 amd64 [установлен, автоматически] php7.2-readline/bionic-updates,bionic-security,now 7.2.24-0ubuntu0.18.04.1 amd64 [установлен, автоматически] php7.2-zip/bionic-updates,bionic-security,now 7.2.24-0ubuntu0.18.04.1 amd64 [установлен]
Файлы конфигурации всех установленных модулей PHP находятся в директории /etc/php/VERSION/mods-available
:
$ cd /etc/php/7.2/mods-available $ ls calendar.ini ftp.ini json.ini posix.ini sysvmsg.ini xdebug.ini ctype.ini gd.ini opcache.ini readline.ini sysvsem.ini zip.ini exif.ini gettext.ini pdo.ini shmop.ini sysvshm.ini fileinfo.ini iconv.ini phar.ini sockets.ini tokenizer.ini
Для управления модулями пакет php-common
предоставляет следующие команды:
phpenmod
— для включения модулейphpdismod
— для отключения модулейphpquery
— для просмотра статуса
Синтаксис команд:
# phpenmod [-v ALL|php_version] [-s ALL|sapi_name] module_name
# phpdismod [-v ALL|php_version] [-s ALL|sapi_name] module_name
$ phpquery [-d] [-q] -v version_name -s sapi_name [-m module_name] [-M] [-S] [-V]
Включим два модуля, которые установили ранее:
$ sudo phpenmod -v 7.2 -s fpm gd # включаем модуль gd
$ sudo phpenmod -v 7.2 -s fpm zip # включаем модуль zip
Отключить модули можно так:
$ sudo phpdismod -v 7.2 -s fpm gd # отключаем модуль gd
$ sudo phpdismod -v 7.2 -s fpm zip # отключаем модуль zip
Опция -v
позволяет указать версию PHP, для которой надо включить или отключить модуль. А опция -s
предназначена для указания SAPI (Server API), например cli
или fpm
.
Команда phpenmod
просто создает внутри директории conf.d
ссылки на файлы из директории mods-available
:
$ cd /etc/php/7.2/fpm/conf.d $ ls -la итого 8 drwxr-xr-x 2 root root 4096 дек 9 15:20 . drwxr-xr-x 4 root root 4096 дек 5 10:14 .. lrwxrwxrwx 1 root root 39 дек 5 10:14 10-opcache.ini -> /etc/php/7.2/mods-available/opcache.ini lrwxrwxrwx 1 root root 35 дек 5 10:14 10-pdo.ini -> /etc/php/7.2/mods-available/pdo.ini lrwxrwxrwx 1 root root 40 дек 5 10:14 20-calendar.ini -> /etc/php/7.2/mods-available/calendar.ini lrwxrwxrwx 1 root root 37 дек 5 10:14 20-ctype.ini -> /etc/php/7.2/mods-available/ctype.ini lrwxrwxrwx 1 root root 36 дек 5 10:14 20-exif.ini -> /etc/php/7.2/mods-available/exif.ini lrwxrwxrwx 1 root root 40 дек 5 10:14 20-fileinfo.ini -> /etc/php/7.2/mods-available/fileinfo.ini lrwxrwxrwx 1 root root 35 дек 5 10:14 20-ftp.ini -> /etc/php/7.2/mods-available/ftp.ini lrwxrwxrwx 1 root root 34 дек 9 13:01 20-gd.ini -> /etc/php/7.2/mods-available/gd.ini lrwxrwxrwx 1 root root 39 дек 5 10:14 20-gettext.ini -> /etc/php/7.2/mods-available/gettext.ini lrwxrwxrwx 1 root root 37 дек 5 10:14 20-iconv.ini -> /etc/php/7.2/mods-available/iconv.ini lrwxrwxrwx 1 root root 36 дек 5 10:14 20-json.ini -> /etc/php/7.2/mods-available/json.ini lrwxrwxrwx 1 root root 36 дек 5 10:14 20-phar.ini -> /etc/php/7.2/mods-available/phar.ini lrwxrwxrwx 1 root root 37 дек 5 10:14 20-posix.ini -> /etc/php/7.2/mods-available/posix.ini lrwxrwxrwx 1 root root 40 дек 5 10:14 20-readline.ini -> /etc/php/7.2/mods-available/readline.ini lrwxrwxrwx 1 root root 37 дек 5 10:14 20-shmop.ini -> /etc/php/7.2/mods-available/shmop.ini lrwxrwxrwx 1 root root 39 дек 5 10:14 20-sockets.ini -> /etc/php/7.2/mods-available/sockets.ini lrwxrwxrwx 1 root root 39 дек 5 10:14 20-sysvmsg.ini -> /etc/php/7.2/mods-available/sysvmsg.ini lrwxrwxrwx 1 root root 39 дек 5 10:14 20-sysvsem.ini -> /etc/php/7.2/mods-available/sysvsem.ini lrwxrwxrwx 1 root root 39 дек 5 10:14 20-sysvshm.ini -> /etc/php/7.2/mods-available/sysvshm.ini lrwxrwxrwx 1 root root 41 дек 5 10:14 20-tokenizer.ini -> /etc/php/7.2/mods-available/tokenizer.ini lrwxrwxrwx 1 root root 38 дек 9 12:59 20-xdebug.ini -> /etc/php/7.2/mods-available/xdebug.ini lrwxrwxrwx 1 root root 35 дек 9 16:20 20-zip.ini -> /etc/php/7.2/mods-available/zip.ini
$ cd /etc/php/7.2/cli/conf.d $ ls -la итого 8 drwxr-xr-x 2 root root 4096 дек 9 14:26 . drwxr-xr-x 3 root root 4096 дек 5 10:14 .. lrwxrwxrwx 1 root root 39 дек 5 10:14 10-opcache.ini -> /etc/php/7.2/mods-available/opcache.ini lrwxrwxrwx 1 root root 35 дек 5 10:14 10-pdo.ini -> /etc/php/7.2/mods-available/pdo.ini lrwxrwxrwx 1 root root 40 дек 5 10:14 20-calendar.ini -> /etc/php/7.2/mods-available/calendar.ini lrwxrwxrwx 1 root root 37 дек 5 10:14 20-ctype.ini -> /etc/php/7.2/mods-available/ctype.ini lrwxrwxrwx 1 root root 36 дек 5 10:14 20-exif.ini -> /etc/php/7.2/mods-available/exif.ini lrwxrwxrwx 1 root root 40 дек 5 10:14 20-fileinfo.ini -> /etc/php/7.2/mods-available/fileinfo.ini lrwxrwxrwx 1 root root 35 дек 5 10:14 20-ftp.ini -> /etc/php/7.2/mods-available/ftp.ini lrwxrwxrwx 1 root root 39 дек 5 10:14 20-gettext.ini -> /etc/php/7.2/mods-available/gettext.ini lrwxrwxrwx 1 root root 37 дек 5 10:14 20-iconv.ini -> /etc/php/7.2/mods-available/iconv.ini lrwxrwxrwx 1 root root 36 дек 5 10:14 20-json.ini -> /etc/php/7.2/mods-available/json.ini lrwxrwxrwx 1 root root 36 дек 5 10:14 20-phar.ini -> /etc/php/7.2/mods-available/phar.ini lrwxrwxrwx 1 root root 37 дек 5 10:14 20-posix.ini -> /etc/php/7.2/mods-available/posix.ini lrwxrwxrwx 1 root root 40 дек 5 10:14 20-readline.ini -> /etc/php/7.2/mods-available/readline.ini lrwxrwxrwx 1 root root 37 дек 5 10:14 20-shmop.ini -> /etc/php/7.2/mods-available/shmop.ini lrwxrwxrwx 1 root root 39 дек 5 10:14 20-sockets.ini -> /etc/php/7.2/mods-available/sockets.ini lrwxrwxrwx 1 root root 39 дек 5 10:14 20-sysvmsg.ini -> /etc/php/7.2/mods-available/sysvmsg.ini lrwxrwxrwx 1 root root 39 дек 5 10:14 20-sysvsem.ini -> /etc/php/7.2/mods-available/sysvsem.ini lrwxrwxrwx 1 root root 39 дек 5 10:14 20-sysvshm.ini -> /etc/php/7.2/mods-available/sysvshm.ini lrwxrwxrwx 1 root root 41 дек 5 10:14 20-tokenizer.ini -> /etc/php/7.2/mods-available/tokenizer.ini lrwxrwxrwx 1 root root 38 дек 9 12:59 20-xdebug.ini -> /etc/php/7.2/mods-available/xdebug.ini
Структура директорий /etc/php/7.2
:
[cli] [conf.d] 10-opcache.ini 20-fileinfo.ini 20-phar.ini 20-sysvmsg.ini 10-pdo.ini 20-ftp.ini 20-posix.ini 20-sysvsem.ini 20-calendar.ini 20-gettext.ini 20-readline.ini 20-sysvshm.ini 20-ctype.ini 20-iconv.ini 20-shmop.ini 20-tokenizer.ini 20-exif.ini 20-json.ini 20-sockets.ini 20-xdebug.ini php.ini (файл конфигурации php-cli) [fpm] [conf.d] 10-opcache.ini 20-ftp.ini 20-posix.ini 20-sysvshm.ini 10-pdo.ini 20-gd.ini 20-readline.ini 20-tokenizer.ini 20-calendar.ini 20-gettext.ini 20-shmop.ini 20-xdebug.ini 20-ctype.ini 20-iconv.ini 20-sockets.ini 20-zip.ini 20-exif.ini 20-json.ini 20-sysvmsg.ini 20-fileinfo.ini 20-phar.ini 20-sysvsem.ini [pool.d] www.conf php-fpm.conf php.ini (файл конфигурации php-fpm) [mods-available] (файлы конфигурации модулей) calendar.ini ftp.ini json.ini posix.ini sysvmsg.ini xdebug.ini ctype.ini gd.ini opcache.ini readline.ini sysvsem.ini zip.ini exif.ini gettext.ini pdo.ini shmop.ini sysvshm.ini fileinfo.ini iconv.ini phar.ini sockets.ini tokenizer.ini
Установленные модули
Список встроенных (и загруженных) модулей PHP и Zend (php-cli
):
$ php7.2 -m [PHP Modules] calendar Core ctype date exif fileinfo filter ftp gettext hash iconv json libxml openssl pcntl pcre PDO Phar posix readline Reflection session shmop sockets sodium SPL standard sysvmsg sysvsem sysvshm tokenizer xdebug Zend OPcache zlib [Zend Modules] Xdebug Zend OPcache
Справка по всем опциям php-cli
$ php7.2 --help Usage: php [options] [-f] <file> [--] [args...] php [options] -r <code> [--] [args...] php [options] [-B <begin_code>] -R <code> [-E <end_code>] [--] [args...] php [options] [-B <begin_code>] -F <file> [-E <end_code>] [--] [args...] php [options] -S <addr>:<port> [-t docroot] [router] php [options] -- [args...] php [options] -a -a Run interactively -c <path>|<file> Look for php.ini file in this directory -n No configuration (ini) files will be used -d foo[=bar] Define INI entry foo with value 'bar' -e Generate extended information for debugger/profiler -f <file> Parse and execute <file>. -h This help -i PHP information -l Syntax check only (lint) -m Show compiled in modules -r <code> Run PHP <code> without using script tags <?..?> -B <begin_code> Run PHP <begin_code> before processing input lines -R <code> Run PHP <code> for every input line -F <file> Parse and execute <file> for every input line -E <end_code> Run PHP <end_code> after processing all input lines -H Hide any passed arguments from external tools. -S <addr>:<port> Run with built-in web server. -t <docroot> Specify document root <docroot> for built-in web server. -s Output HTML syntax highlighted source. -v Version number -w Output source with stripped comments and whitespace. -z <file> Load Zend extension <file>. args... Arguments passed to script. Use -- args when first argument starts with - or script is read from stdin --ini Show configuration file names --rf <name> Show information about function <name>. --rc <name> Show information about class <name>. --re <name> Show information about extension <name>. --rz <name> Show information about Zend extension <name>. --ri <name> Show configuration for extension <name>.
Список встроенных (и загруженных) модулей PHP и Zend (php-fpm)
:
$ php-fpm7.2 -m [PHP Modules] calendar cgi-fcgi Core ctype date exif fileinfo filter ftp gd gettext hash iconv json libxml openssl pcre PDO Phar posix readline Reflection session shmop sockets sodium SPL standard sysvmsg sysvsem sysvshm tokenizer xdebug Zend OPcache zip zlib [Zend Modules] Xdebug Zend OPcache
Справка по всем опциям php-fpm
$ php-fpm7.2 --help Usage: php [-n] [-e] [-h] [-i] [-m] [-v] [-t] [-p <prefix>] [-g <pid>] [-c <file>] [-d foo[=bar]] [-y <file>] [-D] [-F [-O]] -c <path>|<file> Look for php.ini file in this directory -n No php.ini file will be used -d foo[=bar] Define INI entry foo with value 'bar' -e Generate extended information for debugger/profiler -h This help -i PHP information -m Show compiled in modules -v Version number -p, --prefix <dir> Specify alternative prefix path to FastCGI process manager (default: /usr). -g, --pid <file> Specify the PID file location. -y, --fpm-config <file> Specify alternative path to FastCGI process manager config file. -t, --test Test FPM configuration and exit -D, --daemonize force to run in background, and ignore daemonize option from config file -F, --nodaemonize force to stay in foreground, and ignore daemonize option from config file -O, --force-stderr force output to stderr in nodaemonize even if stderr is not a TTY -R, --allow-to-run-as-root Allow pool to run as root (disabled by default)
Поиск:
Apache • Linux • Nginx • PHP • php.ini • Ubuntu • Команда • Модуль • Настройка • Удалить • Установка
Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Table of Contents
PHP простые примеры и тесты кода
PHP конструкция кода
PHP перечисление всего
Не сортировано
Установка времяни
В php.ini строка date.timezone = Etc/GMT-4
поддерживаемые зоны (Москва == Etc/GMT-4)
$date = date('D, j M Y H:i:s ', time()); print($date);
Установка модулей
PHP может быть установленно из исходных кодов и скомпилировано в ручную или оно может быть установленно сразу бинарником.
Бинарник
Встроенные модули
При установке бинарником, все включенные в PHP модули, устанавливаются вместе с ним, но их необходимо включать. К примеру в /etc/php/php.d находятся текстовые файлы, которые инклюдятся при старте и в них прописаны подключения к модулям. Достаточно найти необходимый модуль и расскоментировать его.
Добавление модуля с phpize
находим, скачиваем, компилируем модуль.
wget http://download.suhosin.org/suhosin-0.9.32.1.tar.gz ... yum install php-devel phpize ./configure make && make install
Подключаем модуль к php
echo ‘extension=suhosin.so’ > /etc/php.d/suhosin.ini Перезагрузим веб-сервер
Добавления модуля с PECL
Необходимы пакеты → php-devel и php-pear
pecl install mod_name
из исходных кодов
Встроенные модули
При установке PHP из исходных кодов, он компилируется в бинарник только с теми модулями, которые Вы укажите. Чтобы добавить в PHP модуль, следует перейти в папку от куда Вы его компилировали и перекомпелировать вновь, указав все текущие модули (можно посмотреть в phpinfo()→Configure Command) и новые модули. К примеру ./configure –with-xsl
Установлен ли модуль
На примере iconv
php -m | grep iconv php -r 'echo function_exists("iconv")."n";'
Установлена ли функция
# php -a
php > if(function_exists(‘json_decode’)) {echo “function is enabled”;}else {echo “function is not enabled”;}
Устанавливаем модули
91 11:21 make search name="php52-tokenizer" 92 11:22 cd /usr/ports/devel/php52-tokenizer 93 11:22 make install
78 17:29 whereis ImageMagick 79 17:29 cd /usr/ports/graphics/ImageMagick 80 17:30 make install clean
Zend
http://www.zend.com/en/products/guard/downloads
-
ZendGuardLoader и ZendOptimizer не обратно совместимы. Если приложение просит ZendOptimizer, то при установке ZendGuardLoader и обращение к сайту Вам будет сказано Fatal error: Incompatible file format: The encoded file has format major ID 1, whereas the Loader expects. Следовательно ищем версию которую требует приложение и ставим.
-
ZendGuardLoader и ZendOptimizer подключаются не сложно. Достаточно скачать бинарник и прописать его в конфиги, чтобы php знал где его загружать.
Add the following line to your php.ini file:
zend_extension=<full_path_to_ZendOptimizer.so>
x86
wget http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz # ZendOptimizer совместим с версиями PHP только 5.2 или ниже wget http://downloads.zend.com/guard/5.5.0/ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz
x64
wget http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz wget http://downloads.zend.com/guard/5.5.0/ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz
Zend For FreeBSD
cd /usr/ports/devel/ZendOptimizer make install clean find / -iname "*ZendOptimizer*" #Ищем куда поставился vi /usr/local/etc/php.ini # и дописываем строчку:
zend_extension="Путь до ZendOptimizer.so"
/usr/local/etc/rc.d/apache22 restart # не забываем рестартовать.
Ошибки
Shared object "libm.so.6" not found, required by "ZendOptimizer.so
Сообщает нам, что не найдена библиотека и если ставится на FreeBSD, то вы пытаетесь установить Zend предназначенный для Linux а не FreeBSD.
500 при zend и ioncube
Сначала подключаем ioncube и только потом zend. Иначе, получим 500-тую ошибку.
Спец Zend Ошибки при открытии сайта
Fatal error: Incompatible file format: The encoded file has format major ID 0, whereas the Optimizer expects 2 in
Файлы закачены не корректно и некторые символы изменились в процессе передачи. Включаем бинарный режим или закачиваем через архив.
ioncube
-
Достаточно подключить как zend_extension = /usr/local/lib/php/20060613/ioncube_loader_fre_5.2.so
-
Но если возникают сложности, то пихаем в директорию с сайтом и запускаем loader-wizard.php
ВАЖНО – Подключаем выше (перед) ZendOptimizer (Если он вообще подключен)
DownGrade PHP
Инсталяция из архива
For CentOS:
Суть проста: 1) Удаляем все php 2) Запрещаем Yum работать с php5.3 3) Устанавливаем php
Пример:
yum remove php php-* echo exclude = php*5.3* >> /etc/yum.conf yum install php
Derictive
.htaccess
php_flag name on|off # Для boolian значений
php_value name value # Для остальных значений
VirtualHost
Вопросы
Собственный php.ini для сайта и параметры php
Configuration File (php.ini) Path /etc/
Loaded Configuration File /var/www/grade/data/php-bin/php.ini
Для каких целей создается дополнительный php.ini файл для пользователя?
mbstring.func_overload=2 при этом не работает не в VH не в /etc/php.ini
PHP как CGI
Особенности
Основная польза:
-
Можем использовать для любого сайта, свою, любую версию php
-
Можем заранее компилировать интерпритатор на стороннем сервере или найти скомпилированный. #file php поможет Вам узнать ОС и битность для которой скомрилирован php
Основной минус:
-
CGI съедает больше ресурсов и нежелателен для высоконагруженных сайтов.
Пример
Кратко:
-
Компилируем c –prefix=/some/some/MyDir/myphp , make clean, make, make install
-
ln -s /some/some/MyDir/myphp/bin/php /some/some/www/testim2.ru/cgi-bin/
-
vi /some/some/www/testim2.ru/.htaccess
AddHandler php-cgi .php4 .php Action php-cgi /cgi-bin/php
1
2
Как определить, что сайт рабоате по CGI
-
Указывается в phpinfo.php→Server API
-
php -v # в первой строке, после версии указан cli или cgi. Соответственно, для cgi может использоваться только cgi
разница при использование ISPmanager
diff -r /etc/httpd/conf/httpd.conf /root/testim/1/httpd/conf/httpd.conf
244,246d243 < ScriptAlias /php-bin/ /var/www/test/data/php-bin/ < ScriptAlias /cgi-bin/ /var/www/test/data/www/testim.ru/cgi-bin/ < AddHandler php-cgi .php .php3 .php4 .php5 .phtml 1039d1035 < Options +ExecCGI
PHP как FastCGI
С использованием php-fpm: =1==2=
С использованием spawn-fcgi: =1= =2=
-
Устанавливаем php-fpm или spawn-fcgi (В последних php версиях, php-fpm встроен, кажется)
-
Компилируем c –prefix=/some/some/MyDir/myphp , make clean, make, make install
-
Задаем настройки запуска и путь к php-дистрибутиву для php-fpm или spawn-fcgi
-
Запускаем и смотрим, что приложение успешно работает
Учим работать с FastCGI:
Nginx
Apache
Debug
Отображение ошибок
error_reporting(E_ALL); ini_set('display_errors', '1');
Отображение строк
тайминг
$time_start = microtime(true); // Спим некоторое время usleep(100); $time_end = microtime(true); $time = $time_end - $time_start; echo "<br>"; echo $time
private function some(string $string) { static $some; if ($some) { $result = number_format(microtime(true)-$some,3); echo $string . ': ' . $result . PHP_EOL; } $some = microtime(true); }
eAccelerator
Пример отлова ошибок
try { if(strlen($sql) > 9000){ throw new Exception("Big Query"); } return $this->link->query($sql); }catch(Exception $e) { $FileHandle = fopen("/home/u/user/MySQLbigQuery.log","a"); fwrite($FileHandle,var_export($e->getMessage(),true)); fwrite($FileHandle,var_export($e->getTraceAsString(),true)); fwrite($FileHandle,var_export($sql,true)); return $this->link->query($sql); }
или
try {throw new Exception("Strace");}catch(Exception $e){file_put_contents('/home/dev/konovalov/var.log', print_r(['Trace: ' => $e->getTraceAsString()], true), FILE_APPEND);}
Трасировка вызова:
error_reporting(E_ALL); ini_set('display_errors', '1'); throw new Exception("Strace");
Логируем запросы
$FileHandle = fopen("/home/dev/konovalov/var.log", "a"); fwrite($FileHandle, "nVVV ===== " . date('Y-m-d H:i:s', time()) ." ===== VVVn"); fwrite($FileHandle, print_r(['request' => $_REQUEST], true)); fwrite($FileHandle, "nurl: http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]n"); fwrite($FileHandle, "nrequest:n"); fwrite($FileHandle, var_export($_REQUEST, true)); fwrite($FileHandle, "nget:"); fwrite($FileHandle, var_export($_GET, true)); fwrite($FileHandle, "npost:"); fwrite($FileHandle, var_export($_POST, true)); fwrite($FileHandle, "ncookie:"); fwrite($FileHandle, var_export($_COOKIE, true)); ... fwrite($FileHandle, "nsendHeaders:"); fwrite($FileHandle, var_export(headers_list(), true));
Логируем 2
file_put_contents("/tmp/V45NcnhCU2", print_r($message, 1), FILE_APPEND); file_put_contents("~/debug.log", print_r("Cron: LINE:" . __LINE__ . " PID:" . posix_getpid() . " Date:" . date('Y-m-d H:i:s',time()) . "n" , 1), FILE_APPEND); file_put_contents("log.log", print_r("addr:$_SERVER[REMOTE_ADDR] date:" . date('Y-m-d H:i:s',time()) . "n", 1), FILE_APPEND);
Расширения php используют, когда требуется расширить набор функций для работы PHP-скриптов на сервере. Каждое расширение имеет узкую функциональность и способно серьезно облегчить и ускорить выполнение конкретных задач, связанных с php-кодом. В панель ISPmanager уже интегрированы популярные решения и часто достаточно только включить нужное. Но бывает и так, что для работы сайта или его компонентов необходимы другие расширения — и тут без установки вручную не обойтись.
Список практически всех доступных расширений есть на официальном сайте php.
Установленных версий php на сервере может быть несколько. Нативная версия PHP — версия из официального репозитория ОС. Дополнительно можно установить альтернативные версии. Это иногда необходимо, если для работы проекта требуется определенная версия php, которой нет в официальном репозитории.
Ниже мы рассмотрим несколько вариантов установки расширений php:
- через панель управления ISPmanager. Большинство расширений уже установлено и подключено, но есть те, которые можно дополнительно установить или просто подключить.
- через стандартные пакетные менеджеры yum (CentOS) и apt (Ubuntu/Debian) для нативной версии php.
- через репозиторий модулей pecl — подойдёт как для нативной, так и для альтернативной версии php.
Дополнительно расскажем о том, как подключить расширения в консоли.
Установка расширений через панель ISPmanager
Для начала нужно определить, на какой версии работает наш сайт. Для этого переходим в раздел Домены
– WWW-домены
, выбираем нужный домен и смотрим последний столбец Версия PHP
:
После этого переходим в раздел Настройки web-сервера
– PHP
, выбираем нужную версию php, расширения:
Далее воспользуемся поиском в верхнем правом углу — вводим туда название расширения. Если оно найдено, выбираем его. По необходимости устанавливаем и включаем:
Коротко о pecl
Прежде чем перейти к установке расширений с помощью пакетных менеджеров и альтернативного репозитория модулей, пару слов скажем о том, с какими ситуациями вы можете столкнуться во время работы с pecl. Ниже будут описаны некоторые из них:
Пример 1. Представим, что у нас две версии php:
Нативная (native) — /usr/bin/php
Альтернативная (alt) — /opt/php73/bin/php
— альтернативная версия php 7.3 в панели ISPmanager.
Чтобы установить расширения php, для нативной и альтернативной версии необходимо использовать разные команды.
Для нативной версии:
pecl install Название_расширения
Для альтернативной, php 7.3, так:
/opt/php73/bin/pecl install Название_расширения
Поэтому важно помнить — необходимо указывать полный путь к бинарному файлу pecl. Ниже будут указаны команды установки, без полного пути, так как они могут отличаться, вам нужно иметь это ввиду.
Пример 2. Если вы используете не самую свежую версию php, то во время установки расширения можете получить сообщение о ее несоответствии требованиям — по умолчанию выбираются расширения последних версий, которые часто требуют свежих версий php. Пример уведомления:
requires PHP (version >= 7.0.0, version <= 7.1.0), installed version is 5.6.40
В уведомлении указано, что версия php должна быть не ниже 7.0.0 и не выше 7.1.0, а мы пытаемся установить расширение на версию 5.6.40.
Чтобы понять, какая версия расширения нужна для установки на имеющуюся версию php (в данном случае 5.6.40), обратимся за помощью на официальный сайт. Ищем нужное расширение, переходим на его страницу:
Переходим в список изменений:
Находим в списке изменений, что последней версией расширения, поддерживающей php ниже 7 версии, является redis 2.2.8:
Из этого следует, что для установки нам нужно указать redis-2.2.8, например так (не забудьте поставить знак -
между названием расширения и его версией):
/opt/php56/bin/pecl install redis-2.2.8
Важно!
После установки любого из расширений нужно перезапускать apache2/httpd или php-fpm. Также не забудьте проверить, подключилось ли расширение:
/opt/php56/bin/php -m | grep название_расширения
О том, как установить популярное расширение ioncube, читайте в нашей инструкции
Установка расширений через apt, yum и pecl
Ниже описаны установки расширений для всех версий php — от установки зависимостей до подключения. Описание разделено на версию ОС и версию php: нативную (native) или альтернативную (alt). Будьте внимательны при установке расширений для альтернативной версии через pecl.
mcrypt
Во время установки на вопрос “libmcrypt prefix? [autodetect]” жмём Enter.
- Ubuntu и Debian
- CentOS
native:
apt install php-dev libmcrypt-dev pecl install mcrypt echo extension=mcrypt.so >> Путь_к_конфигу
alt:
apt install php-dev libmcrypt-dev Полный_путь/pecl install mcrypt echo extension=mcrypt.so >> Путь_к_конфигу
native:
yum install libmcrypt-devel php-mcrypt
alt:
yum install libmcrypt-devel php-devel gcc autoconf Полный_путь/pecl install mcrypt echo extension=mcrypt.so >> Путь_к_конфигу
ssh2
- Ubuntu и Debian
- CentOS
native:
apt install libssh2-1-dev php-ssh2
alt:
apt install libssh2-1-dev php-dev Полный_путь/pecl install ssh2 echo extension=ssh2.so >> Путь_к_конфигу
native:
yum install php-pecl-ssh2
alt:
yum install php-devel gcc autoconf libssh2-devel Полный_путь/pecl install ssh2 echo extension=ssh2.so >> Путь_к_конфигу
redis
Во время установки могут быть заданы вопросы:
enable igbinary serializer support? [no] : «Включить поддержку сериализации через igbinary?»
enable lzf compression support? [no] : «Включить поддержку сжатия через алгоритм lzf?»
enable zstd compression support? [no] : «Включить поддержку сжатия через алгоритм zstd?»
yes – да, no – нет
Для выбора yes, должны быть установлены соответствующие модули.
- Ubuntu и Debian
- CentOS
native:
apt install php-redis
alt:
apt install php-dev Полный_путь/pecl install redis echo extension=redis.so >> Путь_к_конфигу
native:
yum install php-pecl-redis
alt:
yum install php-devel gcc autoconf Полный_путь/pecl install redis echo extension=redis.so >> Путь_к_конфигу
lzf
Во время установки будет задан вопрос:
Sacrifice speed in favour of compression ratio? [no] : «Жертвовать скоростью в пользу степени сжатия?»
yes – да, no – нет
При положительном ответе, будет высокая степень сжатия, но низкая скорость загрузки.
- Ubuntu и Debian
- CentOS
native:
apt install php-dev pecl install lzf echo extension=lzf.so >> Путь_к_конфигу
alt:
apt install php-dev Полный_путь/pecl install lzf echo extension=lzf.so >> Путь_к_конфигу
native:
yum install php-pecl-lzf
alt:
yum install php-devel gcc autoconf liblzf liblzf-devel Полный_путь/pecl install lzf echo extension=lzf.so >> Путь_к_конфигу
igbinary
- Ubuntu и Debian
- CentOS
native:
apt install php-igbinary
alt:
apt install php-dev Полный_путь/pecl install igbinary echo extension=igbinary.so >> Путь_к_конфигу
native:
yum install php-igbinary
alt:
yum install php-devel gcc autoconf Полный_путь/pecl install igbinary echo extension=igbinary.so >> Путь_к_конфигу
zstd
- Ubuntu и Debian
- CentOS
apt install libzstd-dev php-dev Полный_путь/pecl install zstd echo extension=zstd.so >> Путь_к_конфигу
native:
yum install php-pecl-zstd
alt:
yum install php-devel gcc autoconf libzstd libzstd-devel Полный_путь/pecl install zstd echo extension=zstd.so >> Путь_к_конфигу
gmagick
- Ubuntu и Debian
- CentOS
native:
apt install php-gmagick
alt:
apt install ibgraphicsmagick1-dev php-dev Полный_путь/pecl install gmagick echo extension=gmagick.so >> Путь_к_конфигу
native:
yum install GraphicsMagick-devel php-pecl-gmagick
alt:
yum install GraphicsMagick-devel gcc autoconf php-devel Полный_путь/pecl install gmagick echo extension=gmagick.so >> Путь_к_конфигу
APCu
- Ubuntu и Debian
- CentOS
native:
apt install php-apcu
alt:
apt install php-dev Полный_путь/pecl install apcu echo extension=apcu.so >> Путь_к_конфигу
native:
yum install php-pecl-apcu
alt:
yum install php-devel gcc autoconf Полный_путь/pecl install apcu echo extension=apcu.so >> Путь_к_конфигу
phalcon
Одним из обязательных требований — наличие установленного расширения PSR. Также потребуется свободные 2 Гб оперативной памяти для компиляции через pecl.
Если во время установки через pecl, система выдаст сообщение об ошибке (см. ниже), значит не хватает оперативной памяти:
cc: fatal error: Killed signal terminated program cc1 compilation terminated. make: *** [Makefile:194: phalcon.lo] Error 1 ERROR: `make' failed
- Ubuntu и Debian
- CentOS
native:
Подключаем репозиторий:
curl -s "https://packagecloud.io/install/repositories/phalcon/stable/script.deb.sh" | bash
Ставим расширение, вместо X указываем версию php:
apt install php7.X-phalcon
alt:
apt install php-dev re2c libpcre3-dev Полный_путь/pecl install phalcon echo extension=phalcon.so >> Путь_к_конфигу
native:
yum install php-phalcon4
alt:
yum install gcc autoconf re2c pcre-devel php-devel Полный_путь/pecl install phalcon echo extension=phalcon.so >> Путь_к_конфигу
PSR
- Ubuntu и Debian
- CentOS
native:
apt install php-psr
alt:
apt install php-dev Полный_путь/pecl install psr echo extension=psr.so >> Путь_к_конфигу
native:
yum install php-pecl-psr
alt:
yum install php-devel gcc autoconf Полный_путь/pecl install psr echo extension=psr.so >> Путь_к_конфигу
Подключение расширения через консоль
Еще один важный момент. После того, как вы установите нужное расширение php, необходимо его подключить. А точнее, прописать путь к конфигурационному файлу — если этого не сделать, то php не будет знать, что добавлено новое расширение.
Узнаём путь к общему конфигурационному файлу php, указывая полный путь к бинарному файлу, например для альтернативной версии php 7.1:
/opt/php71/bin/php -i | grep 'Configuration File'
Вывод будет следующим:
Configuration File (php.ini) Path => /opt/php71/etc Loaded Configuration File => /opt/php71/etc/php.ini
Необходимо значение /opt/php71/etc/php.ini