C bir PHP uzantısı Yazılı Bağlama

1 Cevap php

Edit: Revising My Question

C harici bir PHP modülü oluştururken, nasıl paylaşılan nesneleri bağlarım?

1 Cevap

C uzantısı kod paylaşımlı bir kitaplık kullanıyorsa, config.m4 dosyasında beyan etmek gerekir.

I strongly bir iskelet config.m4 oluşturmak için PHP kaynak dahil olan ext_skel komut dosyası kullanmanızı öneririz:

./ext_skel --extname=myextension

Bir kütüphaneye bağlıyoruz beri (--enable-myextension aksine), kongre tarafından size --with-myextension seçenekleri kullanmalısınız. Config.m4 ilgili satırları yorumsuz ve özğürlüğünü ayrıntıları doldurun.

Aşağıdaki gibi bir şey:

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

Sonra, onu inşa çalıştırmak için:

phpize
./configure --with-myextension
make

Son olarak sistem bunu bulmak için beklediği yerde için modül (veya ln -s) kopyalamanız gerekir.

Hepsi o çalıştıysa php -m listesinde modülü içermelidir.

Ne yazık ki PHP'nin config.m4 komutlarına iyi bir online başvuru bulamadılar - Bunun için kitaplar Sara Golemon's Extending and Embedding PHP ve George Schlossnagle's Advanced PHP Programming parçalarıdır.

Orada Sara Goleman'ın here tarafından PHP uzantıları oluşturmak için makul bir yeni başlayanlar kılavuzu, ama et için gerçekten kitabını gerekir.