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"Инсталирање PHP екстензија на Windows
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Инсталирање PHP екстензија на Windows
Референца за `install.pecl.windows.php` со подобрена типографија и навигација.
Инсталирање PHP екстензија на Windows
Постојат два начина за вчитување на PHP екстензија на Windows: или да се компајлира во PHP, или да се вчита DLL. Вчитувањето на претходно компајлирана екстензија е најлесната и преферирана опција.
За да се вчита екстензија, таа мора да биде достапна како .dll датотека на системот. Сите екстензии автоматски и периодично се компајлираат од PHP Групата (видете ја следната секција за преземање).
За да компајлирате екстензија во PHP, ве молиме погледнете го градење од изворниот код documentation.
За да компајлирате самостојна екстензија (позната и како DLL датотека), ве молиме погледнете ја градење од изворниот код документацијата. Ако DLL датотеката не е достапна ниту со PHP дистрибуцијата, ниту во PECL, можеби ќе биде потребно да се компајлира пред екстензијата да може да се користи.
Каде да се најде екстензија?
PHP екстензиите обично се нарекуваат php_*.dll (каде што ѕвездичката го претставува името на екстензијата), и тие се наоѓаат под PHP\ext folder.
PHP доаѓа со екстензиите кои се најкорисни за мнозинството програмери. Тие се нарекуваат bundled extensions.
Сепак, ако вклучените екстензии не ја обезбедуваат потребната функционалност, екстензија која ја има можеби сепак ќе се најде во (достапно од PHP 7.2.0). PHP Extension Community Library (PECL) е репозиториум за PHP екстензии, кој обезбедува директориум на сите познати екстензии и објекти за преземање и развивање на PHP екстензии.
Ако екстензија е развиена за конкретни намени, може да биде хостирана на PECL за други со исти потреби да имаат корист од неа. Пријатна споредна ефект е што тоа е добра шанса да се добие повратна информација, (се надеваме) благодарност, извештаи за грешки, па дури и поправки/пач. Пред да поднесете екстензија за хостирање на PECL, ве молиме прочитајте » PECL submit.
Која екстензија да се преземе?
Многу пати, ќе има неколку верзии на секоја DLL достапни:
- Различни броеви на верзии (барем првите два броја треба да се совпаѓаат)
- Различни поставки за безбедност на нишките
- Различна архитектура на процесорот (x86, x64, ...)
- Различни поставки за отстранување грешки
-
etc.
Имајте предвид дека поставките на екстензијата треба да се совпаѓаат со сите поставки на PHP извршната датотека што се користи. Следната PHP скрипта ќе ви каже all за PHP поставките:
Пример #1 phpinfo() call
<?php
phpinfo();
?>Или од командната линија, стартувајте:
drive:\path\to\php\executable\php.exe -i
Вчитување на екстензија
Најчестиот начин за вчитување на PHP екстензија е да се вклучи во php.ini конфигурациската датотека. Ве молиме имајте предвид дека многу екстензии се веќе присутни во php.ini и дека само треба да се отстрани точката и запирката за да се активираат.
Имајте предвид дека, од PHP 7.2.0, името на екстензијата може да се користи наместо името на датотеката на екстензијата. Бидејќи ова е независно од ОС и полесно, особено за почетници, тоа станува препорачаниот начин за специфицирање на екстензии за вчитување. Имињата на датотеките остануваат поддржани за компатибилност со претходните верзии.
;extension=php_extname.dll
extension=php_extname.dll
; As of PHP 7.2.0, prefer: extension=extname zend_extension=another_extension
Сепак, некои веб-сервери се збунувачки бидејќи не го користат php.ini лоциран покрај PHP извршната датотека. За да дознаете каде се наоѓа вистинската php.ini се наоѓа, побарајте ја нејзината патека во phpinfo():
Configuration File (php.ini) Path C:\WINDOWS
Loaded Configuration File C:\Program Files\PHP\8.2\php.ini
По активирање на екстензија, зачувајте php.ini, рестартирајте го веб-серверот и проверете phpinfo() повторно. Новата екстензија сега треба да има свој дел.
Решавање проблеми
Ако екстензијата не се појави во phpinfo(), треба да се проверат логовите за да се дознае од каде доаѓа проблемот.
Ако PHP се користи од командната линија (CLI), грешката при вчитување на екстензијата може да се прочита директно на екранот.
Ако PHP се користи од командната линија (CLI), грешката при вчитување на екстензијата може директно да се прочита на екранот.
Ако PHP се користи со веб-сервер, локацијата и форматот на логовите варираат во зависност од софтверот. Ве молиме прочитајте ја документацијата на веб-серверот за да ги лоцирате логовите, бидејќи тоа нема никаква врска со самиот PHP.extension_dirВообичаени проблеми се локацијата на DLL и DLL-ите од кои зависи, вредноста на поставката " php.ini "
внатре phpinfo() и несовпаѓања во поставките при компилација.
Белешки од корисници 4 белешки
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).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.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.