PHP Australia Conference 2015

Установка PHP-расширения в Windows

В Windows есть два способа загрузки PHP-расширения: скомпилировать его вместе с PHP или загрузить DLL. Загрузка заранее скомпилированного расширения является наиболее простым и предпочитаемым способом.

Для загрузки расширения, оно должно присутствовать на вашей системе в виде ".dll" файла. Все расширения автоматически и периодически компилируются командой PHP (см. следующий раздел для загрузки).

За инструкциями по компиляции расширения в PHP обратитесь к разделу "Сборка из исходников".

Для компиляции отдельного расширения (или DLL-файла), обратитесь к разделу " Сборка из исходников". Если DLL-файла нет ни в стандартной поставке PHP ни в PECL, возможно, вам придется скомпилировать его вручную.

Где найти расширение?

PHP-расширения обычно имеют имена вида "php_*.dll" (где звездочка обозначает имя расширения) и располагаются в папке "PHP\ext" ("PHP\extensions" в PHP 4).

PHP поставляет расширения наиболее полезные большинству разработчиков. Такие расширения называются "основными" ("core").

Однако, если вам требуется функционал, который не предоставляется ни одним из основных расширений, возможно, нужное вам расширение есть в PECL. Библиотека расширений сообщества PHP (The PHP Extension Community Library, PECL) является хранилищем расширений PHP, предоставляя каталог и хостинг всех известных расширений для скачки и дальнейшей разработки расширений в PHP.

Если вы разработали какое-либо расширение для собственных нужд, возможно, вы захотите хранить его в PECL, так, чтобы другие также могли воспользоваться результатами вашего труда. Хорошим побочным эффектом будет неплохой шанс получить обратную связь, благодарности (надеемся, что так и будет), сообщения об ошибках и даже исправления/патчи. Пожалуйста, прочтите http://pecl.php.net/package-new.php перед отправкой вашего расширения в PECL.

Какое расширение нужно загрузить?

Очень часто существует несколько версий расширения DLL:

  • Различные номера версий (по крайней мере первые два числа должны совпадать)
  • Различные настройки потокобезопасности
  • Различная архитектура процессора (x86, x64, ...)
  • Различные настройки отладки
  • и т.д.

Помните, что настройки ваших расширений должны совпадать со всеми настройками используемого вами бинарного файла PHP. Следующий PHP-скрипт выведет вам все настройки PHP:

Пример #1 Вызов phpinfo()

<?php
phpinfo
();
?>

Или запустите из командной строки:

drive:\\path\to\php\executable\php.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 Files\PHP\5.2\php.ini

После активации расширения сохраните php.ini, перезагрузите веб-сервер и снова проверьте phpinfo(), в нем должен появиться отдельный раздел с новым расширением.

Решение проблем

Если расширение не появилось в выводе phpinfo(), проверьте лог-файлы на наличие сообщений об ошибках.

Если вы используете PHP в командной строке (CLI), ошибки загрузки расширения будут доступны сразу же на экране.

Если вы используете PHP на веб-сервере, расположение и формат лог-файлов сильно зависит от используемого вами веб-сервера. Пожалуйста, обратитесь к документации вашего веб-сервера, т.к. в данном случае эта ситуация не управляется самим PHP.

Частой проблемой является расположение DLL-файлов, значение " extension_dir" в php.ini, а также несовпадение настроек компиляции.

Если проблемой является несовпадение настроек компиляции, то возможно, вы скачали не тот DLL-файл. Попробуйте снова скачать расширение, на этот раз с правильными настройками. Еще раз, информация функции phpinfo() сильно помогает в этом случае.

add a note add a note

User Contributed Notes 3 notes

up
1
biel325 at gmail dot com
3 years ago
To create a dll extension to
PHP follow this instructions:
http://blog.slickedit.com/2007/09/creating-a-php-5-extension-with-visual-c-2005/

*****IMPORTANT
1)You MUST use the last release of PHP source code, or people will not me able to use your extension. Don't worry to use only the version of the tutorial.
2) The folder "regex" exists in PHP 5.3, just find it in the subfolders.
3)While building your dll in Visual Studio, if you have any problem compiling or linking like: "winsock2.h is missing", find the files on your computer and include the project in the same way that the tutorial taught.
up
-1
chris
5 years ago
In response to soazine:

I've found, using wampserver, that the only configuration file that needs to be edited is the one listed under "Loaded Configuration File" given by phpinfo(). Those for whom this doesn't work should refer to soazine's steps.
up
-5
stuart at kaihatsu dot co dot uk
6 years ago
This is the only way to get PECL extensions - using the command line installer (similar to the PEAR installer) does not work on Windows...

This does not look like its going to be fixed any time soon...

Also, you should look at http://pecl4win.php.net/ for Windows PECL extensions.
To Top