php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #34339 linking probleme oci8 in 32bit with oracle 64bit...
Submitted: 2005-09-02 01:30 UTC Modified: 2005-09-02 23:10 UTC
Votes:1
Avg. Score:5.0 ± 0.0
Reproduced:1 of 1 (100.0%)
Same Version:0 (0.0%)
Same OS:0 (0.0%)
From: info at ch2o dot info Assigned:
Status: Wont fix Package: OCI8 related
PHP Version: 4.4.0 and 5.0.4 OS: HP-UX
Private report: No CVE-ID: None
Have you experienced this issue?
Rate the importance of this bug to you:

 [2005-09-02 01:30 UTC] info at ch2o dot info
Description:
------------
all oracle 64Bit version are delivered with 32bit and 64bit client...

on hp-ux with Oracle 9i 64Bit, the $ORACLE_HOME/lib have 64bit client library and $ORACLE_HOME/lib32 the 32Bit version...
(seem to be the same on AIX, and i think is the same probleme on other 64bit plateforme with oracle 64bit)

with Oracle 8i 64bit the $ORACLE_HOME/lin containt 32bit version and $ORACLE_HOME/lib64 the 64Bit version...

when you whant compile php + oci8 in 32bit with oracle 8i 64bit have no probleme...
but with 9i they dont work beceause the 32bit client lib are in $ORACLE_HOME/lib32 not in $ORACLE_HOME/lib...

with the detection schema used in oci8 ext, they cannot compile php + oci8 in 32bit with oracle 9i 64Bit...

why i whant to compile php in 32Bit with Oracle 64Bit...
on hp-ux there no precompiled version for 64Bit of all opensource needed for compiling php and all the nessary for use php...

i think the probleme is the same with the 10g...


Reproduce code:
---------------
na

Expected result:
----------------
na

Actual result:
--------------
have modified the config.m4 of the oci8...

have replace $OCI8_DIR/lib with $OCI8_LIBDIR...
and have added at the start of AC_OCI8_VERSION:
OCI8_LIBDIR=$OCI8_DIR/lib

and have added :
  elif test -f $OCI8_DIR/lib32/libclntsh.$SHLIB_SUFFIX_NAME.9.0; then
    OCI8_VERSION=9.0
    OCI8_LIBDIR=$OCI8_DIR/lib32
before:
  elif test -f $OCI8_LIBDIR/libclntsh.$SHLIB_SUFFIX_NAME.9.0; then

and they worked fine...

but with that, they privilege the 32bit version vs the default version (the 64bit version with oracle 9i 64Bit)

the seconde posibility is to add --oci8-32bit to force the use of lib32 in place of lib...for use with >=9i 64Bit in 32bit mode...

and --oci8-64bit to force the use of lib64 in place of lib for compile with Oracle 8i 64bit in 64Bit mode...



Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2005-09-02 02:18 UTC] info at ch2o dot info
i think that the modification 1.51 (51 branch) of config.m4 of oci8 (in relation i think with bug #29402) while be ok...
 
but i'm not sure that the PHP_CHECK_64BIT (in acinclude.m4) is ok! because "int" and "long int" are 4 bytes in 32bit mode...on hp-ux 64bit (HP-UX 11.11 on PA RISC)...(tested with gcc 32Bit and HP-UX cc in 32bit and 64Bit!)

the only way i found to detect 64bit on hp-ux is to test macro __LP64__ (on pa risc, beceause on itanium i thnik is differente..)...
 [2005-09-02 07:19 UTC] sniper@php.net
We start supporting 64bit at PHP 5.1.


 [2005-09-02 08:34 UTC] tony2001@php.net
If the way it checks 64bit platform doesn't work for you @ HP-UX and you're able to test it - please provide a patch as we don't have HP-UX anywhere.
 [2005-09-02 20:07 UTC] info at ch2o dot info
i can't test the 64bit completely the 64Bit compile mode on hp-ux, in case i must compile all depandancy of php in 64Bit mode and is very long operation for my little time i have...but i can test the cli compile with hp-ux compiler but with only the included module... i while try it if i have some time in the near future...

but in 32bit compile mode on hp-ux 64Bit, with the autodetecting of the good Oracle lib dir (lib or lib32), with the oci8/config.m4 (version 1.51) provided by php5.1 (a good solution) they dont work because the macro PHP_CHECK_64BIT detect that php are compiled in 64Bit not in 32Bit... 
because "long int" are 4 bit on hp-ux 11.11 on 64Bit hardware in 32bit compiled binary... 
but the compiler bloc the setting of variable with value lager than 32Bit...is why i sugest to modify the detection scheme of the 64Bit on hp-ux with the example have maked before...

or if php4 and php5 are not compiled in 64bit environement, to modify oci8/config.m4 like that have sugested (in first) for php 4.4 and 5.0 (the two have the same problem!) for privileging 32bit version of oracle library...

i'm testing backport to 4.4 and 5.0 of this modification...
with modification of the detecting method of the 64BIT mode...
 [2005-09-02 23:10 UTC] info at ch2o dot info
have tested backport to php4.4 and 5.0 of oci8/config.m4 from PHP 5.1 with add of the PHP_CHECK_64BIT in acinclude.m4
and work fine on hp-ux 11.11 with oracle 9i 64Bit...

checking for Oracle (OCI8) support using ORACLE_HOME installation... yes
checking Oracle Install Directory... /usr/local/oracle/
checking for long int... yes
checking size of long int... 4
checking checking if we're at 64-bit platform... no
checking OCI8 libraries dir... lib32
checking Oracle version... 9.0
checking for OCIEnvNlsCreate in -lclntsh... yes
checking for OCINlsCharSetNameToId in -lclntsh... yes
checking for OCILobIsTemporary in -lclntsh... yes
checking for OCICollAssign in -lclntsh... yes

in fact the 64Bit test work fine, is my fault have focalized on the size of the long int of 4 byte for 64Bit... but is reverse test : if not sized 4 byte is 64Bit! ...

have tested also with instant client... and work fine also...
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Tue Mar 19 10:01:30 2024 UTC