Installing a PHP extension on Windows
There are two ways to load a PHP extension on Windows: either compile it into
PHP, or load the DLL.
Loading a pre-compiled extension is the easiest and preferred way.
To load an extension, it has to be available as a
.dll
file on the system.
All the extensions are automatically and periodically compiled by the PHP
Group (see next section for the download).
To compile an extension into PHP, please refer to the
building from source
documentation.
To compile a standalone extension (aka a DLL file), please refer to the
building from source
documentation.
If the DLL file is available neither with the PHP distribution nor in PECL,
it may be necessary to compile it before the extension can be used.
Where to find an extension?
PHP extensions are usually called php_*.dll (where the
star represents the name of the extension), and they are located under the
PHP\ext
folder.
PHP ships with the extensions most useful to the majority of developers.
They are called bundled extensions.
However, if the bundled extensions do not provide the needed functionality,
one extension that does may still be found in » PECL.
The PHP Extension Community Library (PECL) is a repository for PHP
Extensions, providing a directory of all known extensions and hosting
facilities for downloading and developing PHP extensions.
If an extension has been developed for particular uses, it may be hosted on
PECL so that others with the same needs can benefit from it.
A nice side effect is that it’s a good chance to receive feedback,
(hopefully) thanks, bug reports and even fixes/patches.
Before submitting an extension for hosting on PECL, please read
» PECL submit.
Which extension to download?
Many times, there will be several versions of each DLL available:
-
Different version numbers (at least the first two numbers should match)
-
Different thread safety settings
-
Different processor architecture (x86, x64, …)
-
Different debugging settings
-
etc.
Keep in mind that the extension settings should match all the settings of
the PHP executable being used.
The following PHP script will tell all about the PHP
settings:
Or from the command line, run:
drive:\path\to\php\executable\php.exe -i
Loading an extension
The most common way to load a PHP extension is to include it in
the php.ini configuration file.
Please note that many extensions are already present in the php.ini and
that the semicolon only needs to be removed to activate them.
Note that, as of PHP 7.2.0, the extension name may be used
instead of the extension’s file name.
As this is OS-independent and easier, especially for newcomers, it becomes
the recommended way of specifying extensions to load.
File names remain supported for compatibility with prior versions.
;extension=php_extname.dll
extension=php_extname.dll
; As of PHP 7.2.0, prefer: extension=extname zend_extension=another_extension
However, some web servers are confusing because they do not use
the php.ini located alongside the PHP executable.
To find out where the actual php.ini resides, look for its path
in phpinfo():
Configuration File (php.ini) Path C:\WINDOWS
Loaded Configuration File C:\Program Files\PHP\8.2\php.ini
After activating an extension, save php.ini, restart the web server, and
check phpinfo() again.
The new extension should now have its own section.
Resolving problems
If the extension does not appear in phpinfo(),
the logs should be checked to learn where the problem comes from.
If PHP is being used from the command line (CLI), the extension loading
error can be read directly on the screen.
If PHP is being used with a web server, the location and format of the logs
vary depending on the software.
Please read the web server documentation to locate the logs, as it has
nothing to do with PHP itself.
Common problems are the location of the DLL and the DLLs it depends on, the
value of the «extension_dir»
setting inside php.ini and compile-time setting mismatches.
If the problem lies in a compile-time setting mismatch, probably the DLL
downloaded is not the right one.
Try downloading the extension again with the proper settings.
Again, phpinfo() can be of great help.
Found A Problem?
j dot o dot l dot a dot n at bk dot ru ¶
1 year ago
In order for php to see extensions, it is necessary to specify the root folder when specifying the address to the directory with extensions in php.ini. For example extension_dir = "php/ext"
bk at kaelberer-aio dot de ¶
2 years 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.
dario at 4assistance dot com ¶
2 years 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).
ferdnyc at gmail dot com ¶
2 years 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.1\ext\php_luasandbox.dll, the interpreter would be located at C:\PHP8.1\lua5.1.dll. That allows the PHP binary C:\PHP8.1\php.exe to find those additional DLLs when required.
Last Updated :
05 Jan, 2022
PHP is a general-purpose server scripting language. It is a powerful and important tool for developing dynamic and interactive Web pages. It is widely used, free, fast, flexible, and pragmatic. After installing PHP and a web server on Windows, extensions are also needed because they provide added functionality. PHP with extensions is the best combination for the developers to develop more dynamic and interactive web pages or applications. Extensions can be chosen when PHP starts by modifying your php.ini.
There are so many extensions are built into the Windows version of PHP. To load more extensions you require .dll files in your system. An extension directive or extra DLL does not require loading these extensions. There are many ways to install extensions, the following is one of the ways to install php extensions on Windows.
Prerequisites: Web server(e.g. Apache, XAMPP).
Verifying the extension is installed or not
To verify the extension is installed or not you have to follow the following step:
Step 1: Create a new file in the root directory with an extension.php like findingexten.php. In this file write the following code:
<?php
// It will return all the configurations of the server
phpinfo();
?>
Step 2: Run this file in any browser and you will see the given extension is installed or not.
Installing PHP Extensions on Windows
To install PHP extension we need to follow the following steps:
Step 1: Click on the Config button then select the php.ini file for your PHP installation, and open it in a text editor.
Step 2: Locate the line that specifies the location of the “extension = ” line.
Step 3: Look for the extension you want to install and remove the semicolon preceding that line. For example, if you want to install an IMAP extension, remove the semicolon of the following line and save the file.
;extension = imap
extension = imap
Step 4: Go to ‘php’ folder in the C:\xampp
Step 5: Go to the ext folder and locate the .dll file of the extension you want to install.
Step 6: Now copy the .dll file and paste it into the following folder:
C:\Windows\System32
Step 7: Now restart XAMPP to see the effects.
После установки 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. Например:extension_dir = C:\php\extensions
-
Включите одно или несколько расширений, которые вы хотите использовать,
раскомментировав в файле php.ini строки вида
extension=php_*.dll. Это делается удалением символа «;»
в начале строки для каждого расширения, которое вы хотите включить.Пример #1 Включение расширения Bzip2 в PHP-Windows
// измените следующую строку с ... ;extension=php_bz2.dll // ... на extension=php_bz2.dll
-
Некоторые расширения для своей работы требуют дополнительные библиотеки DLL.
Несколько из них находятся в распространяемом дистрибутиве PHP, в
в корневой директории, но некоторые расширения, например, Oracle
(php_oci8.dll), требуют наличия библиотек DLL, не включаемых в
дистрибутив PHP. Не забудьте включить директорию C:\php в
системную переменную PATH (данный процесс описан в отдельном
разделе помощи). -
Некоторые из этих библиотек DLL не поставляются в дистрибутиве PHP. За деталями обратитесь
к странице документации конкретного расширения. Также прочтите раздел руководства
Установка расширений PECL, чтобы узнать дополнительную
информацию о PECL. Все большее число расширений PHP можно найти в
PECL, и данные расширения требуют
отдельной загрузки.
Замечание:
Если вы запустили PHP в качестве модуля сервера, не забудьте перезагрузить веб-сервер для
применения ваших изменений в файле php.ini.
Следующая таблица описывает некоторые доступные расширения и требуемые дополнительные библиотеки dll.
Расширения PHP
Расширение | Описание | Примечания |
---|---|---|
php_bz2.dll | Функции сжатия bzip2 | — |
php_calendar.dll | Функции преобразования календарей | — |
php_crack.dll | Функции Crack | — |
php_ctype.dll | Семейство функций ctype | — |
php_curl.dll | Функции библиотеки CURL | Требует библиотеки libeay32.dll, ssleay32.dll (в комплекте дистрибутива PHP) |
php_dba.dll | DBA: функции абстрактного слоя DataBase (dbm-стиль) | — |
php_dbase.dll | Функции dBase | — |
php_dbx.dll | Функции dbx | — |
php_exif.dll | Функции EXIF | Требуется библиотека php_mbstring.dll. Библиотека php_exif.dll должна загружаться после php_mbstring.dll в файле php.ini. |
php_fbsql.dll | Функции FrontBase | — |
php_fdf.dll | FDF: функции формата данных «Forms Data Format» | Требуется библиотека fdftk.dll (в комплекте дистрибутива PHP) |
php_filepro.dll | Функции filePro | Доступ только для чтения |
php_ftp.dll | Функции FTP | — |
php_gd2.dll | Библиотека функций обработки изображений GD | GD2 |
php_gettext.dll | Функции Gettext |
В PHP версий <= 4.2.0 требуется библиотека gnu_gettext.dll (в комплекте дистрибутива PHP), в PHP версий >= 4.2.3 требуется библиотека libintl-1.dll и iconv.dll (в комплекте дистрибутива PHP). |
php_hyperwave.dll | Функции HyperWave | — |
php_iconv.dll | Функции конвертации кодировок ICONV | Требуется библиотека iconv-1.3.dll (в комплекте дистрибутива PHP), iconv.dll |
php_ifx.dll | Функции Informix | Требуются библиотеки Informix |
php_iisfunc.dll | Функции управления IIS | — |
php_imap.dll | Функции IMAP POP3 и NNTP | — |
php_ingres.dll | Функции Ingres | Требуются библиотеки Ingres |
php_interbase.dll | Функции InterBase | Требуется библиотека gds32.dll (в комплекте дистрибутива PHP) |
php_ldap.dll | Функции LDAP |
Требует libeay32.dll, ssleay32.dll (в комплекте дистрибутива PHP) |
php_mbstring.dll | Функции для работы с многобайтовыми (Multi-Byte) строками | — |
php_mcrypt.dll | Функции кодирования Mcrypt | Требуется библиотека libmcrypt.dll |
php_mhash.dll | Функции Mhash | Требуется библиотека libmhash.dll (в комплекте дистрибутива PHP) |
php_mime_magic.dll | Функции Mimetype | Требуется файл magic.mime (в комплекте дистрибутива PHP) |
php_ming.dll | Функции Ming для Flash | — |
php_msql.dll | Функции mSQL | Требуется библиотека msql.dll (в комплекте дистрибутива PHP) |
php_mssql.dll | Функции MSSQL | Требуется библиотека ntwdblib.dll (в комплекте дистрибутива PHP) |
php_mysql.dll | Функции MySQL | Требуется библиотека libmysql.dll (в комплекте дистрибутива PHP) |
php_mysqli.dll | Функции MySQLi | Требуется библиотека libmysql.dll (libmysqli.dll в PHP версий <= 5.0.2) (в комплекте дистрибутива PHP) |
php_oci8.dll | Функции Oracle 8 | Требуются клиентские библиотеки Oracle 8.1+ |
php_openssl.dll | Функции OpenSSL | Требуется библиотека libeay32.dll (в комплекте дистрибутива PHP) |
php_pdf.dll | Функции PDF | — |
php_pgsql.dll | Функции PostgreSQL | — |
php_shmop.dll | Функции для работы с разделяемой памятью | — |
php_snmp.dll | Функции для использования протокола SNMP | Только на Windows NT! |
php_soap.dll | Функции SOAP | — |
php_sockets.dll | Функции для работы с сокетами | — |
php_sybase_ct.dll | Функции Sybase | Требуются клиентские библиотеки Sybase |
php_tidy.dll | Функции Tidy | — |
php_tokenizer.dll | Функции Tokenizer | — |
php_w32api.dll | Функции W32api | — |
php_xmlrpc.dll | Функции XML-RPC | Требуется библиотека iconv.dll (в комплекте дистрибутива PHP) |
php_xslt.dll | Функции XSLT |
Требуются библиотеки sablot.dll, expat.dll, iconv.dll (в комплекте дистрибутива PHP). |
php_yaz.dll | Функции YAZ | Требуется библиотека yaz.dll (в комплекте дистрибутива PHP) |
php_zip.dll | Функции для работы с файлами Zip | Доступ только для чтения |
php_zlib.dll | Функции сжатия ZLib | — |
Вернуться к: Установка в системах Windows
Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров1.4K
Обычно при установке расширения PHP возникают проблемы с поиском заранее скомпилированных двоичных файлов, использованием менеджеров пакетов ОС или созданием исходников из исходных данных. Данные способы могли иметь разные варианты реализации на разных платформах и требовать различные команды для осуществления процесса, что делало его сложным и подверженным ошибкам.
PHP Foundation был инициирован проект, призванный заменить архаичный PECL. Это было сделано для удобства, при котором расширения были представлены как пакеты Composer, и значительно упрощает размещение новых расширений. Это делает процесс более простым и эффективным, а также обеспечивает лучшую кроссплатформенную согласованность.
Обращаю ваше внимание, что на момент написания данной статьи данный проект все еще находится в стадии разработки, и существует начальный предварительный вариант, который имеет стабильную и доступную версию загрузки в виде PHAR. Для использования PIE вам также понадобится PHP 8.1 или новее, но PIE может установить расширение для любой установленной версии PHP. PHP Foundation приглашает разработчиков опробовать его и оставить отзыв.
Чтобы установить PHP Installer for Extensions (PIE), выполните следующие действия:
1. Загрузите пакет
Сначала вам нужно скачать pie.phar
файл с официального репозитория или сайта . Это основной файл, необходимый для использования PIE.
2. Установите
Переместите в , например , pie.phar
на ваш компьютер , чтобы вы могли запустить его откуда угодно. Вы можете переименовать его для удобства, например:PATH/usr/local/bin/
mv pie.phar /usr/local/bin/pie
В Windows вы можете переместить его в C:\Program Files
или любой другой каталог в вашем PATH
. Однако я рекомендую использовать Composer и его CLI с подсистемой Windows для Linux (WSL) для лучшего опыта.
3. Сделайте его исполняемым
На компьютерах с ОС, отличной от Windows, необходимо изменить разрешения, чтобы сделать файл исполняемым.
chmod +x /usr/local/bin/pie
Вот и все. Вы можете попробовать запустить его pie -v
в терминале, чтобы проверить, правильно ли он установлен.
Теперь мы можем легко использовать PIE для установки расширений PHP с помощью pie
команды.
pie install <vendor>/<package>
Например, предположим, что вы хотите установить xdebug
расширение для выполнения отладки в вашем PHP-приложении. Вы можете запустить:
pie install xdebug/xdebug
Эта команда извлечет xdebug
расширение из Packagist, соберет его и установит в вашу установку PHP. PIE также добавит расширение в ваш php.ini
файл, поэтому вам не придется делать это вручную.
Все расширения, которые можно установить через PIE, можно найти в Packagist .
Примечание для Windows
В настоящее время PIE не поддерживает сборку расширений в Windows. Он полагается на автора расширения, чтобы предоставить предварительно собранный файл DLL для своего расширения, поэтому, вероятно, есть некоторые расширения, которые вы не можете установить в Windows.
PIE — это отличная инициатива по упрощению установки расширений PHP. Мне нравится, как он обрабатывает расширения как пакеты Composer, что упрощает управление ими и их обновление. Я думаю, что это шаг в правильном направлении для модернизации экосистемы PHP и повышения ее удобства для разработчиков.
Введение в установку PECL
» PECL — это репозиторий расширений PHP, которые доступны вам через систему » PEAR. Эта часть руководства предназначена для демонстрации того, как вы можете получить и установить расширения PECL.
Эти инструкции подразумевают, что /your/phpsrcdir/ является путем к каталогу с дистрибутивом исходного кода PHP, а extname — это имя расширения PECL. Поэтому, приведем в соответствие. Эти инструкции также подразумевают знакомство с » командой pear. Информация в руководстве PEAR для команды pear также применима для команды pecl.
Для того, чтобы расширение можно было использовать, оно должно быть собрано, установлено и загружено. Методы, описанные ниже, предоставляют вам различные рекомендации по поводу того, как собрать и установить расширения, но сами они не будут автоматически загружены. Расширения могут быть загружены через добавление директивы extension в файл php.ini, или путем использования функции dl().
В процессе сборки модулей PHP важно, чтобы у вас были правильные версии необходимых утилит (autoconf, automake, libtool и т.д.). Информацию об этих утилитах и их версиях можно посмотреть тут » Anonymous CVS Instructions.
Загрузка расширений PECL
Есть несколько вариантов для загрузки расширений PECL, в том числе:
$ cvs -d:pserver:cvsread@cvs.php.net:/repository login $ cvs -d:pserver:cvsread@cvs.php.net:/repository co pecl/extname
PECL для пользователей Windows
Как и в случае DLL расширения PHP, установка проста и заключается в копировании файла DLL расширения PECL в директориюextension_dir и подключением затем его через php.ini. Например, добавьте следующую строку в ваш php.ini:
extension=php_extname.dll
После выполнения этих действий, перезапустите web-сервис.
Компиляция общих расширений с помощью команды pecl
PECL позволяет легко создавать общие расширения PHP. Используя » команду pecl, выполните следующее:
Эта команда загрузит исходный код для расширения extname, скомпилирует и установит extname.so в вашу директорию extension_dir. Файл extname.so может быть затем загружен в php.ini
По умолчанию, команда pecl не будет устанавливать пакеты, отмеченные состоянием alpha или beta. Если нет доступных стабильных версий пакетов, вы можете установить beta версию пакета, используя следующую команду:
$ pecl install extname-beta
Также, вы можете установить определенную версию используя такой вариант:
$ pecl install extname-0.1
Замечание: После подключения расширения в php.ini необходимо перезапустить web-сервис для того, чтобы изменения вступили в силу.
Компиляция общих расширений с помощью phpize
Иногда, использование инсталятора pecl не подходит. Это может быть связано с тем, что вы находитесь за файерволом или из-за того, что расширение, которое вы хотите установить, недоступно в PECL-совместимом пакете (к примеру, расширения из CVS, которые еще не зарелизены). Если вам необходимо собрать такое расширение, вы можете использовать низкоуровневые утилиты для выполнения сборки вручную.
Команда phpize используется для подготовки окружения для расширения PHP. В следующем примере директория, где находятся исходные коды расширения, называется extname:
$ cd extname $ phpize $ ./configure $ make # make install
В случае успешной установки будет создан файл extname.so и помещен в PHP extensions directory. Вам будет необходимо добавить строку extension=extname.so в php.ini перед тем, как вы станете использовать это расширение.
Если в системе отсутствует phpize, но существует возможность установки заранее скомпилированных пакетов (типа RPM), убедитесь, что установлена соответствующая devel версия пакета PHP, так как они часто содержат команду phpize с подходящими файлами заголовоков для сборки PHP и его расширений.
Используйте phpize —help для просмотра дополнительной информации.
Компиляция расширений PECL статически в PHP
Возможно, вы захотите собрать расширение PECL статично в ваш бинарйный файл PHP. Для этого необходимо поместить код расширения в директорию php-src/ext/ и вызвать перегенерацию конфигурационных скриптов через систему сборки PHP.
$ cd /your/phpsrcdir/ext $ pecl download extname $ gzip -d < extname.tgz | tar -xvf - $ mv extname-x.x.x extname
В результате будет создана следующая директория:
/your/phpsrcdir/ext/extname
После этого, выполните заново сборку конфигурационного скрипта PHP и затем соберите PHP как обычно:
$ cd /your/phpsrcdir $ rm configure $ ./buildconf --force $ ./configure --help $ ./configure --with-extname --enable-someotherext --with-foobar $ make $ make install
Замечание: Для запуска скрипта ‘buildconf’ вам необходимы autoconf версии 2.13 и automake версии 1.4+ (более новые версии autoconf могут работать, но это не поддерживается).
Одна из двух опций —enable-extname или —with-extname используется в зависимости от расширения. Обычно, в случае, когда расширение не требует подключения внешних библиотек, используется —enable. Для того, чтобы убедиться в этом, выполните следующую команду после buildconf:
$ ./configure --help | grep extname