2009-10-02 9 views

Répondre

11

Si votre code d'extension C utilise une bibliothèque partagée, vous devez le déclarer dans le fichier config.m4.

Je fortement vous recommandons d'utiliser le script ext_skel qui est inclus dans la source de PHP pour générer un config.m4 squelette:

./ext_skel --extname=myextension

Puisque vous vous liez à une bibliothèque, par convention, vous devez utiliser les options --with-myextension (par opposition à --enable-myextension). Décommentez les lignes pertinentes dans le config.m4 et remplissez les détails de votre lib.

Quelque chose comme ce qui suit:

# --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 
    ]) 

Ensuite, pour le construire, exécutez:

phpize 
./configure --with-myextension 
make 

Enfin, vous devez copier votre module (ou ln -s) à l'endroit où votre système attend de le trouver.

Si tout cela fonctionnait alors php -m devrait inclure votre module dans la liste.

Malheureusement, je n'ai jamais trouvé une bonne référence en ligne aux commandes config.m4 de PHP - les livres pour cela sont Sara Golemon's Extending and Embedding PHP et aussi des parties de George Schlossnagle's Advanced PHP Programming.

Il ya un guide de débutants raisonnable pour créer des extensions PHP par Sara Goleman here, mais pour la viande, vous avez vraiment besoin de son livre.

Questions connexes