Thanks for the guess. But when one of these parameters is wrong, PHP engine specifically says so. My configuratin options for php build are --with-apxs2=/usr/local/apache2/bin/apxs --enable-embed=static --with-zlib --enable-debug. I use phpize with the extension. So, this automatically makes the version, debug info, zts settings info of the extension exactly similar to those of PHP. I have listed the gdb trace for successful and unsuccessful cases. I'd appreciate if someone can point what the root cause for this issue.

===========================================================================
When I run a php file through CLI the gdb trace I get is listed below. It successfully loads the axis2.so

Breakpoint 1, php_ini_register_extensions () at /usr/app/php-5.1.4/main/php_ini.c:552 552 zend_llist_apply(&extension_lists.engine, php_load_zend_extension_cb TSRMLS_CC);
(gdb) n
553 zend_llist_apply(&extension_lists.functions, php_load_function_extension_cb TSRMLS_CC);
(gdb) s
zend_llist_apply (l=0x837ab9c, func=0x820e5d1 <php_load_function_extension_cb>) at /usr/app/php-5.1.4/Zend/zend_llist.c:190
190             for (element=l->head; element; element=element->next) {
(gdb) n
191                     func(element->data TSRMLS_CC);
(gdb) s
php_load_function_extension_cb (arg=0x97a7650) at /usr/app/php-5.1.4/main/php_ini.c:232
232             zval *extension = (zval *) arg;
(gdb) n
235             php_dl(extension, MODULE_PERSISTENT, &zval, 0 TSRMLS_CC);
(gdb) p *extension
$4 = {value = {lval = 159003284, dval = 1.7054524387922518e-313, str = {val = 0x97a3294 "axis2.so", len = 8}, ht = 0x97a3294, obj = {handle = 159003284, handlers = 0x8}}, refcount = 0, type = 6 '\006', is_ref = 243 '
(gdb) n
236     }
(gdb) n
zend_llist_apply (l=0x837ab9c, func=0x820e5d1 <php_load_function_extension_cb>) at /usr/app/php-5.1.4/Zend/zend_llist.c:190
190             for (element=l->head; element; element=element->next) {
(gdb)
193     }
(gdb)
php_ini_register_extensions () at /usr/app/php-5.1.4/main/php_ini.c:555
555             zend_llist_destroy(&extension_lists.engine);
(gdb)

=================================================================================
When I use the embed sapi, it fails without being able to load axis2.so (please see the gdb trace below)

Breakpoint 1, php_ini_register_extensions () at /usr/app/php-5.1.4/main/php_ini.c:552 552 zend_llist_apply(&extension_lists.engine, php_load_zend_extension_cb TSRMLS_CC);
(gdb) n
553 zend_llist_apply(&extension_lists.functions, php_load_function_extension_cb TSRMLS_CC);
(gdb) s
zend_llist_apply (l=0x8344f5c, func=0x80d6f2d <php_load_function_extension_cb>) at /usr/app/php-5.1.4/Zend/zend_llist.c:190
190             for (element=l->head; element; element=element->next) {
(gdb) n
191                     func(element->data TSRMLS_CC);
(gdb) s
php_load_function_extension_cb (arg=0x920e580) at /usr/app/php-5.1.4/main/php_ini.c:232
232             zval *extension = (zval *) arg;
(gdb) n
235             php_dl(extension, MODULE_PERSISTENT, &zval, 0 TSRMLS_CC);
(gdb) p *extension
$3 = {value = {lval = 153133716, dval = 1.7051624436017789e-313, str = {val = 0x920a294 "axis2.so", len = 8}, ht = 0x920a294, obj = {handle = 153133716, handlers = 0x8}}, refcount = 0, type = 6 '\006', is_ref = 61 '='}
(gdb) s
php_dl (file=0x920e580, type=1, return_value=0xbf943d74, start_now=0) at /usr/app/php-5.1.4/ext/standard/dl.c:113
113             if (type == MODULE_PERSISTENT) {
(gdb) n
114                     extension_dir = INI_STR("extension_dir");
(gdb)
119             if (type == MODULE_TEMPORARY) {
(gdb)
122                     error_type = E_CORE_WARNING;
(gdb)
125             if (extension_dir && extension_dir[0]){
(gdb)
126                     int extension_dir_len = strlen(extension_dir);
(gdb)
128 libpath = emalloc(extension_dir_len+Z_STRLEN_P(file)+2);
(gdb)
130                     if (IS_SLASH(extension_dir[extension_dir_len-1])) {
(gdb)
133 sprintf(libpath, "%s%c%s", extension_dir, DEFAULT_SLASH, Z_STRVAL_P(file)); /* SAFE */
(gdb)
125             if (extension_dir && extension_dir[0]){
(gdb) p libpath
$4 = 0x923bd04 "/usr/local/lib/php/ext/axis2.so"
(gdb) n
140             handle = DL_LOAD(libpath);
(gdb) s
141             if (!handle) {
(gdb) n
142 php_error_docref(NULL TSRMLS_CC, error_type, "Unable to load dynamic library '%s' - %s", libpath, GET_DL_ERROR());

thanks,
-Nabeel

Richard Lynch wrote:

Wild Guess:

You maybe have different versions and/or different debug/zts settings
on the binaries, and need to re-compile the other files in parallel...

On Wed, May 24, 2006 4:58 am, Nabeel wrote:
Hi,

   I want to call PHP code from C. So, I compiled sapi/embed module
with my PHP 5.1.4 source (--enable-embed=static). It works fine when I
access standard PHP functions.  When any .so file  (e.g.: axis2.so) is
dynamically loaded to PHP, it  gives the following error when I run my
test C code. (this happens with other DSO's as well.)

PHP Warning:  PHP Startup: Unable to load dynamic library
'/usr/local/lib/php/ext/axis2.so' - /usr/local/lib/php/ext/axis2.so:
undefined symbol: _zval_ptr_dtor in Unknown on line 0

axis2.so  works fine thourgh cli and apache interfaces. I wonder
whether
I am missing something. Any help is greatly appreciated.

Thanks,
-Nabeel

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php





--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to