php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #13824 /usr/libexec/libphp4.so: undefined symbol: mm_create
Submitted: 2001-10-25 11:33 UTC Modified: 2001-10-27 06:18 UTC
From: louigi600 at gsmbox dot it Assigned:
Status: Not a bug Package: Compile Failure
PHP Version: 4.0.6 OS: linux slackware 8.0
Private report: No CVE-ID: None
 [2001-10-25 11:33 UTC] louigi600 at gsmbox dot it
I'm using php 4.0.6 and apache 1.3.20 ona a slackware 8.0 (with kernel 2.2.19).
I recompiled apache to be linked against libpthread (as told to do so for erlier problem):

root@extensa:~# ldd /usr/sbin/httpd
        libm.so.6 => /lib/libm.so.6 (0x40020000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x40042000)
        libdb.so.3 => /lib/libdb.so.3 (0x40070000)
        libdl.so.2 => /lib/libdl.so.2 (0x400c3000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x400c7000)
        libc.so.6 => /lib/libc.so.6 (0x400dd000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

I neaded to recompile php to be able to query oracle instances so this ti what I did:
 
export LD_LIBRARY_PATH=/ora/app/oracle/product/8.0.5/lib:/usr/lib:/lib
export LD_RUN_LIBRARY_PATH=/ora/app/oracle/product/8.0.5/lib:/usr/lib:/lib
make clean
rm config.cache
./configure --prefix=/usr --with-apxs=/usr/sbin/apxs --with-mod_charset --enable-force-cgi-redirect --enable-discard-path --with-con
fig-file-path=/etc/apache --enable-safe-mode --with-openssl --enable-bcmath --with-bz2 --enable-calendar --enable-ctype --with-gdbm 
--enable-ftp --enable-gd-imgstrttf --with-gd=/usr/src/gd-1.8.2 --with-jpeg-dir=/usr/src/gd-1.8.2 --with-png-dir --with-gmp --with-my
sql=/usr --with-xml=shared --with-readline=/usr --enable-trans-sid --enable-shmop --enable-sockets --with-regex=php --enable-sysvsem
 --enable-sysvshm --enable-yp --enable-memory-limit --with-tsrm-pthreads --enable-shared --disable-debug --with-zlib=/usr --with-ora
cle=/opt/ora_syb/ora/app/oracle/product/8.0.5 --with-mm=/usr

this stage went successfully with no ATTENTION message & no errors produced in debug.log so I went ahead and compiled & installed:

make
/usr/sbin/apachectl stop
make install

root@extensa:~# ldd /usr/libexec/libphp4.so
        libdl.so.2 => /lib/libdl.so.2 (0x40189000)
        libreadline.so.4 => /usr/lib/libreadline.so.4 (0x4018d000)
        libhistory.so.4 => /usr/lib/libhistory.so.4 (0x401b1000)
        libncurses.so.5 => /lib/libncurses.so.5 (0x401b7000)
        libclntsh.so.1.0 => /opt/ora_syb/ora/app/oracle/product/8.0.5/lib/libclntsh.so.1.0 (0x401f7000)
        libm.so.6 => /lib/libm.so.6 (0x40578000)
        libnsl.so.1 => /lib/libnsl.so.1 (0x4059a000)
        libmysqlclient.so.10 => /usr/lib/libmysqlclient.so.10 (0x405af000)
        libz.so.1 => /usr/lib/libz.so.1 (0x405ca000)
        libgmp.so.3 => /usr/lib/libgmp.so.3 (0x405d9000)
        libpng.so.2 => /usr/lib/libpng.so.2 (0x405fa000)
        libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x40624000)
        libgdbm.so.2 => /usr/lib/libgdbm.so.2 (0x40643000)
        libbz2.so.1.0 => /lib/libbz2.so.1.0 (0x4064a000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x4065a000)
        libssl.so.0 => /usr/lib/libssl.so.0 (0x40688000)
        libcrypto.so.0 => /usr/lib/libcrypto.so.0 (0x4073e000)
        libresolv.so.2 => /lib/libresolv.so.2 (0x407fe000)
        libc.so.6 => /lib/libc.so.6 (0x4080f000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)

But when I tried to restart apache I got this error:

root@extensa:~#/usr/sbin/apachectl start
Syntax error on line 237 of /etc/apache/httpd.conf:
Cannot load /usr/libexec/libphp4.so into server: /usr/libexec/libphp4.so: undefined symbol: mm_create
/usr/sbin/apachectl start: httpd could not be started

What can I do to solve the problem ?

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-10-25 18:26 UTC] sniper@php.net
And you have libmm.a (or libmm.so) in /usr/lib ?

--Jani

 [2001-10-26 03:37 UTC] louigi600 at gsmbox dot it
Of course YES ... btw the ldd I produced was relevent to the php compilrd after having removed ""--with-mm=/usr" option (reading on will explain why).
I'll tell you more before compiling in oracle support it worked fine with the exact same configuration (apart from oracle).
I then decided to remove temporarely the "--with-mm=/usr" option and I had a a partial sucess: apachje starts and php workes fine eccept for oracle ....
In more detail I get defunct httpd's when I execute this function:

function oraconnect_test($a,$b) {
$conn = Ora_Logon("system@orcl","manager");
$string = Ora_Error ($conn);
print "$string";
ora_logoff ($conn);
}

php returnes this error:

Warning: Oracle: Connection Failed: Error while trying to retrieve text for error ORA-12154 in /home/httpd/html/cpr/functions.php on line 223

Warning: Supplied argument is not a valid Oracle-Connection/Cursor resource in /home/httpd/html/cpr/functions.php on line 225

Warning: Supplied argument is not a valid Oracle-Connection resource in /home/httpd/html/cpr/functions.php on line 228

and one httpd process becomes defunct.

According to oracle ORA-12154 means:
12154, 00000, "TNS:could not resolve service name"
// *Cause:  The service name specified is not defined correctly in the
// TNSNAMES.ORA file.
// *Action:  Make the following checks and correct the error:
//           - Verify that a TNSNAMES.ORA file exists and is in the proper
//             place and accessible. See the operating system specific manual
//             for details on the required name and location.
//           - Check to see that the service name exists in one of the
//             TNSNAMES.ORA files and add it if necessary.
//           - Make sure there are no syntax errors anywhere in the file.
//             Particularly look for unmatched parentheses or stray characters.
//             Any error in a TNSNAMES.ORA file makes it unusable. See
//             Chapter 4 in the SQL*Net V2 Administrator's Guide. If
//             possible, regenerate the configuration files using the Oracle
//             Network Manager.

but my tnsnames is ok:
bash$ tnsping orcl

TNS Ping Utility for Linux: Version 8.0.5.0.0 - Production on 26-OCT-01 09:29:51

(c) Copyright 1997 Oracle Corporation.  All rights reserved.

Attempting to contact (ADDRESS=(PROTOCOL=TCP)(Host=linux)(Port=1521))
OK (60 msec)

Now what do you suggest ?


 [2001-10-26 07:50 UTC] sniper@php.net
Please try adding this to your configure line:

--enable-sigchild

Also, you should propably be using the oci8 instead:
(replace --with-oracle with --with-oci8)

http://www.php.net/oci8 

and set the environment variables before starting Apache.

--Jani

 [2001-10-26 09:12 UTC] louigi600 at gsmbox dot it
ok it seams that oracle8 libraries are not down compatible with oracle7 libs.
No need for "--enable-sigchild" as that I gather is a special issue for oracle 8.1 users.

Now let's look back at the original problem with the unresolved symbol:

Remember that I hadto temporarely remove the option "--with-mm=/usr" because apache was not starting.
what can I do about that ?
 [2001-10-26 13:29 UTC] sniper@php.net
You mentioned that you have libmm.a (or .so) in /usr/lib?
Does this library have mm_create symbol in it:

# nm /usr/lib/libmm.a | grep mm_create

Replace libmm.a with libmm.so if you don't have the static
lib installed. 

What does ldd output when you have compiled PHP with mm support?

--Jani


 [2001-10-27 05:18 UTC] louigi600 at gsmbox dot it
this is the situation on my box:
root@extensa:~# ls -l /usr/lib/libmm*
-rw-r--r--    1 root     root        15554 Oct 19 16:28 /usr/lib/libmm.a
-rw-r--r--    1 root     root          629 Oct 19 16:28 /usr/lib/libmm.la
lrwxrwxrwx    1 root     root           16 Aug  2 19:43 /usr/lib/libmm.so -> lib
mm.so.11.0.23*
lrwxrwxrwx    1 root     root           16 Aug  2 19:43 /usr/lib/libmm.so.11 ->
libmm.so.11.0.23*
-rwxr-xr-x    1 root     root        18748 Oct 19 16:28 /usr/lib/libmm.so.11.0.2
3*

root@extensa:~# nm /usr/lib/libmm.a | grep -i mm_create
0000000000000000 T MM_create
                 U mm_create
0000000000000000 T mm_create 

root@extensa:/usr/src/php-4.0.6# ldd ./.libs/libphp4.so
        libdl.so.2 => /lib/libdl.so.2 (0x4018f000)
        libreadline.so.4 => /usr/lib/libreadline.so.4 (0x40193000)
        libhistory.so.4 => /usr/lib/libhistory.so.4 (0x401b7000)
        libncurses.so.5 => /lib/libncurses.so.5 (0x401bd000)
        libclntsh.so.1.0 => /usr/lib/libclntsh.so.1.0 (0x401fd000)
        libm.so.6 => /lib/libm.so.6 (0x4057e000)
        libnsl.so.1 => /lib/libnsl.so.1 (0x405a0000)
        libmysqlclient.so.10 => /usr/lib/libmysqlclient.so.10 (0x405b5000)
        libz.so.1 => /usr/lib/libz.so.1 (0x405d0000)
        libgmp.so.3 => /usr/lib/libgmp.so.3 (0x405df000)
        libpng.so.2 => /usr/lib/libpng.so.2 (0x40600000)
        libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x4062a000)
        libgdbm.so.2 => /usr/lib/libgdbm.so.2 (0x40649000)
        libbz2.so.1.0 => /lib/libbz2.so.1.0 (0x40650000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x40660000)
        libssl.so.0 => /usr/lib/libssl.so.0 (0x4068e000)
        libcrypto.so.0 => /usr/lib/libcrypto.so.0 (0x40744000)
        libresolv.so.2 => /lib/libresolv.so.2 (0x40804000)
        libc.so.6 => /lib/libc.so.6 (0x40815000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000) 

libmm does not seem to be there but configure ended with 
+--------------------------------------------------------------------+
| License:                                                           |
| This software is subject to the PHP License, available in this     |
| distribution in the file LICENSE.  By continuing this installation |
| process, you are bound by the terms of this license agreement.     |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point.                            |
+--------------------------------------------------------------------+

Thank you for using PHP.
whitch is a goo sign (and produced nothing in debud.log)

and moreover gere's a grep from output of configure:

root@extensa:/usr/src/php-4.0.6# grep -i mm log
checking for sys/mman.h... yes
checking for memmove... yes
checking for mmap... yes
checking for memmove... (cached) yes
checking for mm support... yes
checking command to parse /usr/bin/nm -B output... ok
checking how to hardcode library paths into programs... immediate 

Now what do you suggest ?

 [2001-10-27 06:07 UTC] sniper@php.net
Propably something wrong with the libs. Reinstall libmm.
And try also with latest CVS snapshot from http://snaps.php.net/ 

I'm sure this is not a bug in PHP. Something wrong in your
system.

--Jani


 [2001-10-27 06:12 UTC] louigi600 at gsmbox dot it
I'm sure this is not the case because things worked fine till I tried to add in oracle.
Remember that first I recompiled php 4.0.6 with exact same options of original slackware package & things worked fine (including apache) .
 [2001-10-27 06:18 UTC] sniper@php.net
Of course it's not..ask further support questions
on the mailing lists. This is not a discussion forum.

 [2002-02-22 06:59 UTC] vlajos at dazzle dot bke dot hu
I have the same problem.
It seems that oracle also contains a libmm.a in his lib directory, and this haven't mm_create.
Maybe usefull to rename the oracle's libmm when compiling php.
But I'm not sure, that this is a correct solution.
But It helped for me for compiling php.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sat Apr 27 19:01:29 2024 UTC