PHP compile help ifx_checkAPI error
Posted in 2005
Gary Quiring built PHP 5.0.4 on Solaris 9 with Informix SDK 2.81.UC3 (also tried 2.90.FC1) and Apache failed to load libphp5.so because the symbol ifx_checkAPI was not found. Bernhard suggested the newest CSDK. Gary found the documentation says the checkapi object file must be linked when not using esql. Jonathan Leffler suspected the PHP build omitted that object file and advised linking with the esql script or adding it. No confirmed fix.
Auto-generated by Claude from the posts below — may be imperfect; read the full thread.
Topics: Connectivity: ESQL/C, 4GL & Embedded SQL, Networking & sqlhosts Configuration, Platform-Specific Issues, Internationalization & Character Sets
I am trying to use PHP 5.0.4 on Solaris 9 (Sparc) with SDK 2.81.UC3. When I
fire up httpd I get the following error:
Cannot load /usr/apache/libexec/libphp5.so into server: ld.so.1: httpd: fatal: r
elocation error: file /u/informix/lib/esql/libifsql.so: symbol ifx_checkAPI: ref
erenced symbol not found
environment:
IFX_LIBDIR=-L/u/informix/lib -L/u/informix/lib/esql
LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/var/local/lib:/opt/SUNWspro/lib:/usr/openwin/lib:/u/informix/lib:/u/informix/lib/esql:/u/informix/lib/tools/
INFORMIXSQLHOSTS=/u/informix/etc/sqlhosts
INFORMIXSERVER=dev1IFX_INCDIR=/u/informix/incl/sql
INFORMIXDIR=/u/informixIFX_LIBS=/u/informix/lib/esq/libifsql.a \\
/u/informix/lib/libifasf.a \\
/u/informix/lib/esql/libifgena \\
/u/informix/lib/esql/libifos. \\
/u/informix/lib/esql/libifglsa \\
-lgen -lgls -lm -ldl /u/informix/lib/esql/checkapio \\
/u/informix/lib/esql/libifglxa
PATH=.:/usr/local/bin:/usr/xpg4/bin:/usr/sbin:/usr/bin:/u/bin:/opt/SUNWspro/bin:/usr/local/bin:/usr/local/sbin:/usr/ccs/bin:/u/informix/bin:/usr/tbin:/usr/openw
in/bin:/opt/VRTS/bin:/usr/local/samba/bin
Thanks
Gary Quiring
Which CSDK did you use.
I had a similar error and downloaded the newest CSDK (2.90)
"Gary Quiring" <gquiring@msn.com> schrieb im Newsbeitrag
news:mktb91dp1rlb0sor5f7jnp3n1ncmt0gpo8@4ax.com...
>I am trying to use PHP 5.0.4 on Solaris 9 (Sparc) with SDK 2.81.UC3. When
>I
> fire up httpd I get the following error:
>
> Cannot load /usr/apache/libexec/libphp5.so into server: ld.so.1: httpd:
> fatal: r
> elocation error: file /u/informix/lib/esql/libifsql.so: symbol
> ifx_checkAPI: ref
> erenced symbol not found
>
> environment:
> IFX_LIBDIR=-L/u/informix/lib -L/u/informix/lib/esql
> LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/var/local/lib:/opt/SUNWspro/lib:/usr/op> enwin/lib:/u/informix/lib:/u/informix/lib/esql:/u/informix/lib/tools/
> INFORMIXSQLHOSTS=/u/informix/etc/sqlhosts
> INFORMIXSERVER=dev1> IFX_INCDIR=/u/informix/incl/sql
> INFORMIXDIR=/u/informix
On Thu, 26 May 2005 20:25:51 +0200, "Bernhard \\(Berlin\\)" <news@gramberg.de>
wrote:
I tried 2.81 UC3 and 2.90FC1.
>Which CSDK did you use.
>I had a similar error and downloaded the newest CSDK (2.90)
>
>"Gary Quiring" <gquiring@msn.com> schrieb im Newsbeitrag
>news:mktb91dp1rlb0sor5f7jnp3n1ncmt0gpo8@4ax.com...
>>I am trying to use PHP 5.0.4 on Solaris 9 (Sparc) with SDK 2.81.UC3. When
>>I
>> fire up httpd I get the following error:
>>
>> Cannot load /usr/apache/libexec/libphp5.so into server: ld.so.1: httpd:
>> fatal: r
>> elocation error: file /u/informix/lib/esql/libifsql.so: symbol
>> ifx_checkAPI: ref
>> erenced symbol not found
>>
>> environment:
>> IFX_LIBDIR=-L/u/informix/lib -L/u/informix/lib/esql
>> LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/var/local/lib:/opt/SUNWspro/lib:/usr/op>> enwin/lib:/u/informix/lib:/u/informix/lib/esql:/u/informix/lib/tools/
>> INFORMIXSQLHOSTS=/u/informix/etc/sqlhosts
>> INFORMIXSERVER=dev1>> IFX_INCDIR=/u/informix/incl/sql
>> INFORMIXDIR=/u/informix>
On Thu, 26 May 2005 12:26:16 -0400, Gary Quiring <gquiring@msn.com> wrote:
>I am trying to use PHP 5.0.4 on Solaris 9 (Sparc) with SDK 2.81.UC3. When I
>fire up httpd I get the following error:
>
>Cannot load /usr/apache/libexec/libphp5.so into server: ld.so.1: httpd: fatal: r
>elocation error: file /u/informix/lib/esql/libifsql.so: symbol ifx_checkAPI: ref
>erenced symbol not found
>
>environment:
>IFX_LIBDIR=-L/u/informix/lib -L/u/informix/lib/esql
>LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/var/local/lib:/opt/SUNWspro/lib:/usr/op>enwin/lib:/u/informix/lib:/u/informix/lib/esql:/u/informix/lib/tools/
>INFORMIXSQLHOSTS=/u/informix/etc/sqlhosts
>INFORMIXSERVER=dev1>IFX_INCDIR=/u/informix/incl/sql
>INFORMIXDIR=/u/informix>IFX_LIBS=/u/informix/lib/esq/libifsql.a \\
>/u/informix/lib/libifasf.a \\
>/u/informix/lib/esql/libifgena \\
>/u/informix/lib/esql/libifos. \\
>/u/informix/lib/esql/libifglsa \\
>-lgen -lgls -lm -ldl /u/informix/lib/esql/checkapio \\
>/u/informix/lib/esql/libifglxa
>PATH=.:/usr/local/bin:/usr/xpg4/bin:/usr/sbin:/usr/bin:/u/bin:/opt/SUNWspro/bin:>/usr/local/bin:/usr/local/sbin:/usr/ccs/bin:/u/informix/bin:/usr/tbin:/usr/openw
>in/bin:/opt/VRTS/bin:/usr/local/samba/bin
>
>Thanks
>Gary Quiring
>
I found this note:
If the API version of the libraries in this executable file are not compatible,
ESQL/C returns a runtime error that indicates which library is not compatible.
You must recompile your ESQL/C application to link the new release-version of
the shared library.
If you do not use esql to link one of the shared Informix general libraries with
your ESQL/C application, you must explicitly link the checkapi.o file with your
application. Otherwise, ESQL/C might generate an error at link time of the form:
Anyone have ideas on how to fix this?
Gary Quiring wrote:
> On Thu, 26 May 2005 12:26:16 -0400, Gary Quiring <gquiring@msn.com> wrote:
>
>
>>I am trying to use PHP 5.0.4 on Solaris 9 (Sparc) with SDK 2.81.UC3. When I
>>fire up httpd I get the following error:
>>
>>Cannot load /usr/apache/libexec/libphp5.so into server: ld.so.1: httpd: fatal: r
>>elocation error: file /u/informix/lib/esql/libifsql.so: symbol ifx_checkAPI: ref
>>erenced symbol not found
>>
>>environment:
>>IFX_LIBDIR=-L/u/informix/lib -L/u/informix/lib/esql
>>LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/var/local/lib:/opt/SUNWspro/lib:/usr/op>>enwin/lib:/u/informix/lib:/u/informix/lib/esql:/u/informix/lib/tools/
>>INFORMIXSQLHOSTS=/u/informix/etc/sqlhosts
>>INFORMIXSERVER=dev1>>IFX_INCDIR=/u/informix/incl/sql
>>INFORMIXDIR=/u/informix>>IFX_LIBS=/u/informix/lib/esq/libifsql.a \\
>>/u/informix/lib/libifasf.a \\
>>/u/informix/lib/esql/libifgena \\
>>/u/informix/lib/esql/libifos. \\
>>/u/informix/lib/esql/libifglsa \\
>>-lgen -lgls -lm -ldl /u/informix/lib/esql/checkapio \\
>>/u/informix/lib/esql/libifglxa
>>PATH=.:/usr/local/bin:/usr/xpg4/bin:/usr/sbin:/usr/bin:/u/bin:/opt/SUNWspro/bin:>>/usr/local/bin:/usr/local/sbin:/usr/ccs/bin:/u/informix/bin:/usr/tbin:/usr/openw
>>in/bin:/opt/VRTS/bin:/usr/local/samba/bin
>>
>>Thanks
>>Gary Quiring
>>
>
> I found this note:
> If the API version of the libraries in this executable file are not compatible,
> ESQL/C returns a runtime error that indicates which library is not compatible.
> You must recompile your ESQL/C application to link the new release-version of
> the shared library.
> If you do not use esql to link one of the shared Informix general libraries with
> your ESQL/C application, you must explicitly link the checkapi.o file with your
> application. Otherwise, ESQL/C might generate an error at link time of the form:
>
>
> Anyone have ideas on how to fix this?
I suspect that the trouble is that the PHP build is not attempting to
link the relevant object file - ifxchkapi.o or some such name - as well
as the libraries. If you look at the linker line for an ESQL/C program
with shared libraries, you see that the object file is also linked; and
I'd be relatively surprised, given the error message, if the PHP module
is built with the object file included.
Work out how to build/link the PHP shared object with the esql script -
or how to get the object file included in the link line.
--
Jonathan Leffler #include <disclaimer.h>
Email: jleffler@earthlink.net, jleffler@us.ibm.com
Guardian of DBD::Informix v2005.01 -- http://dbi.perl.org/