Компіляція PECL через команду phpize
Інколи використання встановлювача pecl
не підходить
через заборону фаєрвола, або ж через те, що розширення, яке ви хочете
встановити, недоступне у вигляді пакета PECL, наприклад, розширення з SVN,
що ще не має релізу. Якщо вам потрібно зібрати таке розширення, ви можете це
зробити вручну за допомогою інструмента для низькорівневої побудови.
Команда phpize
використовується для підготовки оточення
збірки розширення PHP. В наступному прикладі, сирці для розширення
знаходяться в директорії з назвою extname:
$ cd extname
$ phpize
$ ./configure
$ make
# make install
В разі успішного встановлення буде створено файл
extname.so та покладено в
директорію розширень PHP. Вам
потрібно додати рядок extension=extname.so
у файл
php.ini, перед тим, як ви зможете використовувати розширення.
Якщо у вашій системі відсутня команда phpize
, але є
можливість використовувати предкомпільований пакет (такий як RPM),
переконайтесь також, що встановили відповідну версію пакету PHP для
розробників, оскільки вони часто включають команду phpize
разом з відповідними заголовками файлів для збірки PHP та її розширень.
Виконайте команду phpize --help, щоб відобразити
додаткову інформацію для використання.
Brian ¶16 years ago
If you have multiple PHP versions installed, you may be able to specify for which installation you'd like to build by using the --with-php-config option during configuration.
--with-php-config=[Insert path to proper php-config here]
For example (my case):
./configure --with-php-config=/usr/local/php5/bin/php-config5
admin at eexit dot net ¶12 years ago
When compiling an extension for a stack which is 64 bits (for example) and your compiler is configured to compile in 32 bits, you can manually compile your extensions using C flags before your configure.
Example: my system compiler is 32 bits and my stack is 64 bits. To compile my xdebug:
# phpize
# CFLAGS=-m64 CPPFLAGS=-m64 CCASFLAGS=-m64 ./configure --enable-xdebug
# gmake
# file modules/xdebug.so
modules/xdebug.so: ELF 64-bit LSB dynamic lib AMD64 Version 1, dynamically linked, not stripped, no debugging information available
dmytton at php dot net ¶18 years ago
In some situations (e.g. on a cPanel server), the built extension will not be placed into the correct extensions directory by the make install process. Use your phpinfo() output to determine what the correct extension_dir path is and move the generated .so file into that directory. The extension=extname.so line in php.ini will then find the extension file correctly.