#19219 [Opn->Fbk]: Cannot build with-informix for Apache DSO

From: Date: Tue, 03 Sep 2002 23:02:39 +0000
Subject: #19219 [Opn->Fbk]: Cannot build with-informix for Apache DSO
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-18344@lists.php.net to get a copy of this message
 ID:               19219
 Updated by:       sniper@php.net
 Reported By:      jerrysmith@directvinternet.com
-Status:           Open
+Status:           Feedback
 Bug Type:         Informix related
 Operating System: HPUX 11.0
 PHP Version:      4.2.2
 New Comment:

Try compiling PHP as static module for Apache instead.
(this really is not PHP bug but libtool one..)



Previous Comments:
------------------------------------------------------------------------

[2002-09-03 17:56:02] jerrysmith@directvinternet.com

CONFIGURATION
=============
Running the HP Depot Version of Apache 1.3.26 that we pre-built for
HPUX11 to work with DSO.
----------------------------------
[hpserv02] ./httpd -v
Server version: Apache/1.3.26 (Unix)
Server built:   Jun 24 2002 20:07:33
[hpserv02] ./httpd -l
Compiled-in modules:
  http_core.c
  mod_so.c
suexec: disabled; invalid wrapper /usr/local/apache/bin/suexec
[hpserv02] 
-----------------------------------
BUG DESCRIPTION
===============

The HPUX os shared libraries are built with the .sl suffix.  I found a
post on google where the fix is to simply rename the file libphp4.sl to
libphp4.so.

I created a script for various types of builds to automatically fix
this and help identify the informix problem.

Note: I can build the basic php4.2.2 by configuring with and or without
mysql and it executes fine..ie.. I can run the test url <?phpinfo()?>. 
The informix build completes but the apache will not start.

STEPS TO RECREATE PROBLEM
==========================

The script I am using to correct the shared library problem is as
follows: (note the different configurations I have built)

# Setup Environment..

export INFORMIXDIR=/usr/informix
export PATH=$PATH:$INFORMIXDIR/bin
export DBPATH=/usr/informix
export INFORMIXSERVER=sedb
export
LD_LIBRARY_PATH=/usr/lib:/opt/langtools/lib:/usr/informix/lib/esqlc:/usr/informix/lib/incl/esqlc


# added these variables from a post I found on Google that reportedly
worked for static build..

export "IFX_LIBS=""-L$INFORMIXDIR/lib -L$INFORMIXDIR/lib/esql"""
export "IFX_INCDIR=""-L$INFORMIXDIR/incl/esql"""
export "IFX_LIBDIR=""-L$INFORMIXDIR/lib -L$INFORMIXDIR/lib/esql"""

# stop WebServer
apachectl stop

./configure --with-apxs=/usr/informix/apache/bin/apxs --with-mysql=no 
--with-informix=yes

#./configure --with-apxs=/usr/informix/apache/bin/apxs
--with-mysql=yes

#./configure --with-apxs=/usr/informix/apache/bin/apxs --with-mysql=no

make
make install

# since HPUX shared libraries have the .sl suffix we have to rename
thelibphp4
#
mv libs/libphp4.sl libs/libphp4.so
cp libs/libphp4.so /usr/informix/apache/lib/modules

# re-execute the failed command..
apxs -S LIBEXECDIR="/usr/informix/apache/lib/modules" -i -a -n php4
libs/libphp4.so

# start WebServer
apachectl start
####################END OF SCRIPT###########################


NOTE:  As stated before, if I build a php without the informix module,
all works as it should.

If I build the informix configuration, the build completed, but with
the following warnings:

.....previous lines omitted...
Making all in .
        /bin/sh /usr/local/src/php-4.2.2/libtool --silent --mode=link
cc  -I. -I/usr/local/src/php-4.2.2/ -I/usr/local/src/php-4.2.2/main
-I/usr/local/src/php-4.2.2 -I/usr/local/apache/include
-I/usr/local/src/php-4.2.2/Zend -I/usr/informix/incl/esql
-I/usr/local/src/php-4.2.2/ext/xml/expat  -DHPUX11 -DUSE_HSREGEX
-DUSE_EXPAT -I/usr/local/src/php-4.2.2/TSRM -g -prefer-pic   -o
libphp4.la -rpath /usr/local/src/php-4.2.2/libs -avoid-version
-L/usr/informix/lib -L/usr/informix/lib/esql  -R /usr/informix/lib -R
/usr/informix/lib/esql stub.lo  Zend/libZend.la  sapi/apache/libsapi.la
 main/libmain.la  regex/libregex.la 
/usr/local/src/php-4.2.2/ext/ctype/libctype.la
/usr/local/src/php-4.2.2/ext/informix/libinformix.la
/usr/local/src/php-4.2.2/ext/pcre/libpcre.la
/usr/local/src/php-4.2.2/ext/posix/libposix.la
/usr/local/src/php-4.2.2/ext/session/libsession.la
/usr/local/src/php-4.2.2/ext/standard/libstandard.la
/usr/local/src/php-4.2.2/ext/xml/libxml.la  TSRM/libtsrm.la -lpam
-L/usr/informix/lib/esql -lixos -L/usr/informix/lib/esql -lixgen
-L/usr/informix/lib/esql -lixsql -L/usr/informix/lib -lixasf
-L/usr/informix/lib/esql -lixos -L/usr/informix/lib/esql -lixgen
-L/usr/informix/lib/esql -lixgls -lnsl_s -lV3 -lcl -lsec
-L/usr/informix/lib/esql -lixglx -lcrypt -lm -lnsl -lcrypt 

*** Warning: This library needs some functionality provided by -lV3.
*** I have the capability to make that library automatically link in
when
*** you link to this library.  But I can only do this if you have a
*** shared version of the library, which you do not appear to have.

*** Warning: This library needs some functionality provided by
-lcrypt.
*** I have the capability to make that library automatically link in
when
*** you link to this library.  But I can only do this if you have a
*** shared version of the library, which you do not appear to have.

*** Warning: This library needs some functionality provided by
-lcrypt.
*** I have the capability to make that library automatically link in
when
*** you link to this library.  But I can only do this if you have a
*** shared version of the library, which you do not appear to have.
*** The inter-library dependencies that have been dropped here will be
*** automatically added whenever a program is linked with this library
*** or is declared to -dlopen it.

Making install in .
        /usr/local/src/php-4.2.2/build/shtool mkdir -p
"/usr/local/apache/lib/modules" && /usr/informix/apache/bin/apxs -S
LIBEXECDIR="/usr/local/apache/lib/modules" -i -a -n php4
libs/libphp4.sl
apxs:Error: file libs/libphp4.sl is not a DSO
*** Error exit code 1

Stop.
*** Error exit code 1

Stop.

##########################################################

ERROR ENCOUNTERED
=================

at this point my script fixes the above error and attempts to start the
apache server...

###########LINES FROM SCRIPT###############
# since HPUX shared libraries have the .sl suffix we have to rename
thelibphp4
#
mv libs/libphp4.sl libs/libphp4.so
cp libs/libphp4.so /usr/informix/apache/lib/modules

# re-execute the failed command..
apxs -S LIBEXECDIR="/usr/informix/apache/lib/modules" -i -a -n php4
libs/libphp4.so

# start WebServer
apachectl start

###############################################

[activating module `php4' in /usr/local/apache/etc/httpd.conf]
cp libs/libphp4.so /usr/informix/apache/lib/modules/libphp4.so
chmod 755 /usr/informix/apache/lib/modules/libphp4.so
cp /usr/local/apache/etc/httpd.conf
/usr/local/apache/etc/httpd.conf.bak
cp /usr/local/apache/etc/httpd.conf.new
/usr/local/apache/etc/httpd.conf
rm /usr/local/apache/etc/httpd.conf.new
/usr/lib/dld.sl: Can't shl_load() a library containing Thread Local
Storage: /usr/lib/libcl.2
/usr/lib/dld.sl: Exec format error
Syntax error on line 236 of /usr/local/apache/etc/httpd.conf:
Cannot load /usr/local/apache/lib/modules/libphp4.so into server: Exec
format error
/usr/informix/apache/bin/apachectl start: httpd could not be started
===============END PROBLEM DEFINITION====================

Notes:  

I have done some research and believe that the library in question
(libcl.2 not a shared library) could be replaced with a shared one in
the make file, but I don't know what library to replace it with?

I have completely wiped the file structure containing the php-4.2.2
directory and re-run the entire process with no change in the results.
 
Please help!

Thanks,  

Jerry


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=19219&edit=1



Thread (20 messages)

« previous php.bugs (#18344) next »