Как найти модуль php

В 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

  1. ZendGuardLoader и ZendOptimizer не обратно совместимы. Если приложение просит ZendOptimizer, то при установке ZendGuardLoader и обращение к сайту Вам будет сказано Fatal error: Incompatible file format: The encoded file has format major ID 1, whereas the Loader expects. Следовательно ищем версию которую требует приложение и ставим.

  2. 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

  1. Достаточно подключить как zend_extension = /usr/local/lib/php/20060613/ioncube_loader_fre_5.2.so

  2. Но если возникают сложности, то пихаем в директорию с сайтом и запускаем 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 съедает больше ресурсов и нежелателен для высоконагруженных сайтов.

Пример

Кратко:

  1. Компилируем c –prefix=/some/some/MyDir/myphp , make clean, make, make install

  2. ln -s /some/some/MyDir/myphp/bin/php /some/some/www/testim2.ru/cgi-bin/

  3. vi /some/some/www/testim2.ru/.htaccess

AddHandler php-cgi .php4 .php 
Action php-cgi /cgi-bin/php

1
2

Как определить, что сайт рабоате по CGI

  1. Указывается в phpinfo.php→Server API

  2. 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=

  1. Устанавливаем php-fpm или spawn-fcgi (В последних php версиях, php-fpm встроен, кажется)

  2. Компилируем c –prefix=/some/some/MyDir/myphp , make clean, make, make install

  3. Задаем настройки запуска и путь к php-дистрибутиву для php-fpm или spawn-fcgi

  4. Запускаем и смотрим, что приложение успешно работает

Учим работать с 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

Этот материал был полезен?

Добавить комментарий