Programming/php2014. 10. 14. 10:57
크로스컴파일 해서 넣는데
php / php-cgi를 실행하면 계속 확장기능을 쓸수 없다고 나와서
의아한 나머지 검색을 해보니

dlopen 이라는 녀석에서 no가 뜬다 -_-!!
Running system checks
checking for sendmail... no
checking whether system uses EBCDIC... no
checking whether byte ordering is bigendian... unknown
checking whether writing to stdout works... no
checking for socket... yes
checking for socketpair... yes
checking for htonl... yes
checking for gethostname... yes
checking for gethostbyaddr... yes
checking for yp_get_default_domain... no
checking for __yp_get_default_domain... no
checking for yp_get_default_domain in -lnsl... yes
checking for dlopen... no
checking for __dlopen... no
checking for dlopen in -ldl... yes 

소스를 뒤져보면.. dlopen이라는게 이렇게 있는데 
$ vi Zend/zend.h
#if defined(HAVE_LIBDL) && !defined(ZEND_WIN32)

# ifndef RTLD_LAZY
#  define RTLD_LAZY 1    /* Solaris 1, FreeBSD's (2.1.7.1 and older) */
# endif

# ifndef RTLD_GLOBAL
#  define RTLD_GLOBAL 0
# endif

# if defined(RTLD_GROUP) && defined(RTLD_WORLD) && defined(RTLD_PARENT)
#  define DL_LOAD(libname)          dlopen(libname, RTLD_LAZY | RTLD_GLOBAL | RTLD_GROUP | RTLD_WORLD | RTLD_PARENT)
# elif defined(RTLD_DEEPBIND)
#  define DL_LOAD(libname)          dlopen(libname, RTLD_LAZY | RTLD_GLOBAL | RTLD_DEEPBIND)
# else
#  define DL_LOAD(libname)          dlopen(libname, RTLD_LAZY | RTLD_GLOBAL)
# endif
# define DL_UNLOAD                  dlclose
# if defined(DLSYM_NEEDS_UNDERSCORE)
#  define DL_FETCH_SYMBOL(h,s)      dlsym((h), "_" s)
# else
#  define DL_FETCH_SYMBOL           dlsym
# endif
# define DL_ERROR                   dlerror
# define DL_HANDLE                  void *
# define ZEND_EXTENSIONS_SUPPORT    1
#elif defined(ZEND_WIN32)
# define DL_LOAD(libname)           LoadLibrary(libname)
# define DL_FETCH_SYMBOL            GetProcAddress
# define DL_UNLOAD                  FreeLibrary
# define DL_HANDLE                  HMODULE
# define ZEND_EXTENSIONS_SUPPORT    1
#else
# define DL_HANDLE                  void *
# define ZEND_EXTENSIONS_SUPPORT    0
#endif 

[링크 : http://www.opensource.apple.com/.../apache_mod_php-18.8/php/Zend/zend_extensions.c

*.so로 제공되는 확장기능을 당연히 dlopen()을 쓸수 없으면 dynamic linking을 쓸수 없기에 비활성화 되는 것 -_-
configure에서 강제로 해당 부분을 주석 처리하고 넘기는 수 밖에 없다. 
Name
dladdr, dlclose, dlerror, dlopen, dlsym, dlvsym - programming interface to dynamic linking loader

Synopsis
#include <dlfcn.h>
void *dlopen(const char *filename, int flag);
char *dlerror(void);
void *dlsym(void *handle, const char *symbol);
int dlclose(void *handle);

Link with -ldl.

[링크 : http://linux.die.net/man/3/dlopen

'Programming > php' 카테고리의 다른 글

php 5.3.22 / xcache 1.3.2  (0) 2014.10.15
php 5.5.17 opcache / arm  (0) 2014.10.14
php php-cgi 차이점?  (0) 2014.10.10
<? <?php 설정  (0) 2014.10.10
lighttpd + php-fpm  (0) 2014.10.10
Posted by 구차니