Если ваш код расширения C использует разделяемую библиотеку, вы должны указать это в файле config.m4
.
I настоятельно рекомендуем использовать сценарий ext_skel
, включенный в исходный код PHP, для создания скелета config.m4:
./ext_skel --extname=myextension
Поскольку вы ссылаетесь на библиотеку, по соглашению вы должны использовать опции --with-myextension
(в отличие от --enable-myextension
). Раскомментируйте соответствующие строки в config.m4 и введите данные вашей библиотеки.
Примерно так:
# --with-myextension -> check for lib and symbol presence
LIBNAME=the_lib_your_extension_needs # you may want to change this
LIBSYMBOL=some_symbol_in_the_lib_you_extension_needs # you most likely want to change this
PHP_CHECK_LIBRARY($LIBNAME,$LIBSYMBOL,
[
PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $MYEXTENSION_DIR/lib, MYEXTENSION_SHARED_LIBADD)
AC_DEFINE(HAVE_MYEXTENSIONLIB,1,[ ])
],[
AC_MSG_ERROR([wrong $LIBNAME lib version or lib not found])
],[
-L$MYEXTENSION_DIR/lib -ldl
])
Затем, чтобы построить его, запустите:
phpize
./configure --with-myextension
make
Наконец, вам нужно скопировать ваш модуль (или ln -s
) туда, где ваша система ожидает его найти.
Если это все сработало, тогда php -m
должен включить ваш модуль в список.
К сожалению, я никогда не нашел хорошую онлайн-справку по командам PHP config.m4 - книги для этого Расширение и встраивание Сары Големон PHP , а также части Расширенное программирование PHP Джорджа Шлосснагла .
Есть разумное руководство для начинающих по созданию расширений PHP от Sara Goleman здесь , но для мяса вам действительно нужна ее книга.