Установка PHP-расширения в Windows
В Windows есть два способа загрузки PHP-расширения: скомпилировать его вместе с PHP или загрузить DLL. Загрузка заранее скомпилированного расширения является наиболее простым и предпочитаемым способом.
Для загрузки расширения, оно должно присутствовать на вашей системе в виде «.dll» файла. Все расширения автоматически и периодически компилируются командой PHP (см. следующий раздел для загрузки).
За инструкциями по компиляции расширения в PHP обратитесь к разделу «Сборка из исходников».
Для компиляции отдельного расширения (или DLL-файла), обратитесь к разделу » Сборка из исходников». Если DLL-файла нет ни в стандартной поставке PHP ни в PECL, возможно, вам придется скомпилировать его вручную.
Где найти расширение?
PHP-расширения обычно имеют имена вида «php_*.dll» (где звездочка обозначает имя расширения) и располагаются в папке «PHP\ext».
PHP поставляет расширения наиболее полезные большинству разработчиков. Такие расширения называются «основными» («core»).
Однако, если вам требуется функционал, который не предоставляется ни одним из основных расширений, возможно, нужное вам расширение есть в PECL. Библиотека расширений сообщества PHP (The PHP Extension Community Library, PECL) является хранилищем расширений PHP, предоставляя каталог и хостинг всех известных расширений для скачки и дальнейшей разработки расширений в PHP.
Если вы разработали какое-либо расширение для собственных нужд, возможно, вы захотите хранить его в PECL, так, чтобы другие также могли воспользоваться результатами вашего труда. Хорошим побочным эффектом будет неплохой шанс получить обратную связь, благодарности (надеемся, что так и будет), сообщения об ошибках и даже исправления/патчи. Пожалуйста, прочтите » публикация PECL; перед отправкой вашего расширения в PECL.
Какое расширение нужно загрузить?
Очень часто существует несколько версий расширения DLL:
- Различные номера версий (по крайней мере первые два числа должны совпадать)
- Различные настройки потокобезопасности
- Различная архитектура процессора (x86, x64, . )
- Различные настройки отладки
- и т.д.
Помните, что настройки ваших расширений должны совпадать со всеми настройками используемого вами бинарного файла PHP. Следующий PHP-скрипт выведет вам все настройки PHP:
Пример #1 Вызов phpinfo()
Установка расширений PHP в ОС Windows
После установки PHP и веб-сервера на ОС Windows может понадобиться установить некоторые расширения для добавления функционала. Вы можете выбрать, какие расширения будут загружаться при старте PHP, модификацией вашего файла php.ini . Также вы можете загружать расширения динамически в ваших скриптах, используя функцию dl() .
Библиотеки DLL расширений PHP имеют префикс php_.
Многие расширения встроены в Windows-версию PHP. Это значит, что дополнительные DLL-файлы и директива extension не используются для загрузки данных расширений. Таблица расширений PHP в Windows, содержащая список расширений, требующих (или обычно требующих) дополнительные DLL-файлы. Ниже приведен список встроенных расширений (обновлено PHP 5.0.4): BCMath, Caledar, COM, Ctype, DOM, FTP, LibXML, Iconv, ODBC, PCRE, Session, SimpleXML, SPL, SQLite, WDDX, XML и Zlib.
Место по умолчанию, в котором PHP ищет расширения — C:\php5 . Для изменения данной настройки согласно вашей установке PHP отредактируйте файл php.ini следующим образом:
измените опцию extension_dir так, чтобы она указывала на директорию, в которой расположены расширения или в которую вы поместили файлы php_*.dll . Например:
Включите одно или несколько расширений, которые вы хотите использовать, раскомментировав в файле php.ini строки вида extension=php_*.dll. Это делается удалением символа «;» в начале строки для каждого расширения, которое вы хотите включить.
Пример #1 Включение расширения Bzip2 в PHP-Windows
Некоторые расширения для своей работы требуют дополнительные библиотеки DLL. Несколько из них находятся в распространяемом дистрибутиве PHP, в в корневой директории, но некоторые расширения, например, Oracle ( php_oci8.dll ), требуют наличия библиотек DLL, не включаемых в дистрибутив PHP. Не забудьте включить директорию C:\php в системную переменную PATH (данный процесс описан в отдельном разделе помощи).
Некоторые из этих библиотек DLL не поставляются в дистрибутиве PHP. За деталями обратитесь к странице документации конкретного расширения. Также прочтите раздел руководства Установка расширений PECL, чтобы узнать дополнительную информацию о PECL . Все большее число расширений PHP можно найти в PECL , и данные расширения требуют отдельной загрузки.
Как установить расширение PHP: из репозитория и исходников
В большинстве случаев расширение можно установить из репозитория. В репозитории включаются все популярные расширения.
Выяснить, что доступно для установки можно так:
php7.0-mbstring — MBSTRING module for PHP
php7.0-mcrypt — libmcrypt module for PHP
php7.0-mysql — MySQL module for PHP
php7.0-odbc — ODBC module for PHP
php7.0-opcache — Zend OpCache module for PHP
php7.0-pgsql — PostgreSQL module for PHP
php7.0-phpdbg — server-side, HTML-embedded scripting language (PHPDBG binary)
php7.0-pspell — pspell module for PHP
Производится поиск по маске, среди результатов непосредственно php7.0 и все расширения.
Так, если планируется работа с PostgreSQL, то нужно установить php7.0-pgsql.
Любая установка — потенциально опасная операция, поэтому сначала ее следует проводить с ключем —dry-run. В этом случае будут проверены зависимости, но изменений в систему фактически не вносится.
Если ошибок не возникло, но расширение можно устанавливать
Теперь расширение php7.0-pgsql установлено, осталось его подключить.
Сборка расширений PHP
Сборку можно выполнять на рабочей машине, но лучше использовать для этого другой сервер с аналогичной конфигурацией.
Компиляция нужна для расширений, отсутствующих в репозитрии и встречающихся реже.
Исходники расширений можно найти на сайте https://pecl.php.net/
Допустим, что требуется stomp (https://pecl.php.net/package/stomp)
Нужно скачать исходники
Затем распаковать архив
И перейти в каталог с файлами расширения
Далее при условии, что на сервере используется одна версия PHP:
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100412
Zend Extension Api No: 20100412
Если больше одной версии — потребуется указывать phpize под конкретную версию и phpconfig. Это бинарные файлы, использующиеся для сборки.
Ошибки в логах после сборки появляются про разные версии PHP Api Version и Zend Extension Api No говорят о не тех использованных phpize и phpconfig.
При отсутствии phpize устанавливается пакет php5-dev
configure: creating ./config.status
config.status: creating config.h
config.status: executing libtool commands
Build complete.
Don’t forget to run ‘make test’.
Installing shared extensions: /usr/lib/php7.1.21/20160303/
В результате получаем файл /usr/lib/php7.1.21/20160303/stomp.so, который нужно подключить в php.ini
При условии, что используется php той версии, для которой собрано расширение и конфигурационный файл размещается по пути /etc/php/php.ini:
Далее все процессы можно завершить, чтобы быстрее увидеть результат
Php install extensions windows
After installing PHP and a webserver on Windows, you will probably want to install some extensions for added functionality. You can choose which extensions you would like to load when PHP starts by modifying your php.ini . You can also load a module dynamically in your script using dl() .
The DLLs for PHP extensions are prefixed with php_ .
The default location PHP searches for extensions is C:\php4\extensions in PHP 4 and C:\php5 in PHP 5. To change this setting to reflect your setup of PHP edit your php.ini file:
Enable the extension(s) in php.ini you want to use by uncommenting the extension=php_*.dll lines in php.ini . This is done by deleting the leading ; from the extension you want to load.