ID: 31038
User updated by: damien dot harper at keops dot net
Reported By: damien dot harper at keops dot net
-Status: Feedback
+Status: Open
Bug Type: OCI8 related
Operating System: Red Hat 8
PHP Version: 4.3.10RC2
New Comment:
I've just tried... still segmfaulting !
Tried other PHP compilation options but it's still the same !
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql
--with-zlib-dir=/usr/local --enable-force-cgi-redirect --disable-cgi
--with-oci8=/home/oracle/OraHome1 --enable-sigchild --with-xml
I can't get it to work !
Will a Oracle 10g client will work ?
Previous Comments:
------------------------------------------------------------------------
[2004-12-14 00:02:59] [EMAIL PROTECTED]
This is pure guess, but in file ext/oci8/oci8.c try changing the number
2 on line 2180 to 0 (zero) and recompile PHP.
Patch here:
Index: oci8.c
===================================================================
RCS file: /repository/php-src/ext/oci8/oci8.c,v
retrieving revision 1.183.2.16
diff -u -r1.183.2.16 oci8.c
--- oci8.c 3 Nov 2004 13:35:56 -0000 1.183.2.16
+++ oci8.c 13 Dec 2004 23:02:12 -0000
@@ -2177,7 +2177,7 @@
/* Safe, charsetid is initialized to 0 */
CALL_OCI(OCINlsEnvironmentVariableGet(&charsetid,
- 2,
+ 0,
OCI_NLS_CHARSET_ID,
0,
&rsize));
------------------------------------------------------------------------
[2004-12-13 10:18:11] damien dot harper at keops dot net
I tried several ways to set the environnement variables up :
1. within /etc/profile (export VARIABLE=value)
2. within apache start script (/usr/local/apache2/bin/apachectl)
3. within the PHP script using PHP's putenv function
All these ones are set :
ORACLE_HOME
ORACLE_SID
LD_PRELOAD
LD_LIBRARY_PATH
NLS_LANG
ORA_NLS33
Still crashing...
------------------------------------------------------------------------
[2004-12-11 14:42:34] [EMAIL PROTECTED]
Please check that you have properly setup the Oracle environment
variables as mentioned here:
http://www.php.net/manual/en/ref.oci8.php
(check the user comments about setting it up!)
------------------------------------------------------------------------
[2004-12-09 16:01:34] damien dot harper at keops dot net
Description:
------------
Apache crashes (segmentation fault) as soon as it encounters
the ocilogon instruction.
Everything works like a charm from command line!
sqlplus connects and queries without any errors.
For information :
Apache 2.0.52 compiled and installed with :
./configure -�enable-shared=max
make
make install
PHP 4.3.10RC2 (same problem with PHP 4.3.9) compiled and installed with
:
./configure --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin
--sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share
--includedir=/usr/include --libdir=/usr/lib --libexecdir=/usr/libexec
--localstatedir=/var --sharedstatedir=/usr/com --mandir=/usr/share/man
--infodir=/usr/share/info --prefix=/usr --with-config-file-path=/etc
--disable-debug --enable-pic --enable-inline-optimization --with-curl
--with-dom=/usr --with-exec-dir=/usr/bin --with-gettext --with-ncurses
--with-regex=system --with-xml --with-expat-dir=/usr --with-zlib
--enable-bcmath --enable-exif --enable-ftp --enable-magic-quotes
--enable-safe-mode --enable-sockets --enable-track-vars
--enable-trans-sid --with-pear=/usr/share/pear --with-mysql=shared
--with-oci8=shared --enable-bcmath
--with-apxs2=/usr/local/apache2/bin/apxs
make
make install
Oracle Client 9.2.0.1 (same problem with 9.2.0.2 and 9.2.0.3)
Oracle database is 8.1.6 (same problem with our test database which is
Oracle 9i)
Reproduce code:
---------------
$username = "*****";
$passwd = "*****";
$host = "10.211.162.35";
$port = "1521";
$service = "SIRENET";
$db="(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=$host)(PORT=$port)))(CONNECT_DATA=(SERVICE_NAME=$service)))";
$conn = OCILogon($username,$passwd,$db);
if (!$conn) {
echo "Connection failed";
echo "Error Message: [" . OCIError($conn) . "]";
exit;
} else {
echo "Connected!"."\n";
$parse=OCIParse($conn,"select che_nocheval from cheval where
rownum < 10");
// OCIDefineByName($parse,"che_nocheval",$che_nocheval);
OCIExecute($parse,OCI_DEFAULT);
echo "\nRecuperation de donnees\n";
$nrows = ocifetchstatement($parse, $rs, 0, 100,OCI_NUM);
$resultTab = "";
$numCol = 0;
for ( $iRow = 0; $iRow < $nrows;
$iRow++ ) {
reset($rs);
while ( $column = each($rs) )
{
$data =
$column['value'];
$resultTab[$iRow][$numCol] = $data[$iRow];
echo
$iRow.'|'.$numCol.'|'.$resultTab[$iRow][$numCol];
$numCol++;
}
$numCol = 0;
}
OCIFreeStatement($parse);
OCILogoff($conn);
}
Actual result:
--------------
Apache segfaults
Starting program: /usr/local/apache2/bin/httpd -X
[New Thread 8192 (LWP 2417)]
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 8192 (LWP 2417)]
0x4078fd5d in lxhcsn () from
/home/oracle/OraHome1/lib/libclntsh.so.9.0
(gdb) bt
#0 0x4078fd5d in lxhcsn () from
/home/oracle/OraHome1/lib/libclntsh.so.9.0
#1 0x40274837 in kpcsnevget () from
/home/oracle/OraHome1/lib/libclntsh.so.9.0
#2 0x401ecae2 in OCINlsEnvironmentVariableGet () from
/home/oracle/OraHome1/lib/libclntsh.so.9.0
#3 0x4113eb53 in _oci_open_session (server=0x8224cb8,
username=0x821735c "sirenet", password=0x82174ec "sirenet",
persistent=0, exclusive=0, charset=0x4114595d "") at
/root/kic_temp/php-4.3.9/ext/oci8/oci8.c:2183
#4 0x4113f9e6 in oci_do_connect (ht=3, return_value=0x82176d4,
this_ptr=0x0, return_value_used=1, persistent=0,
exclusive=0) at /root/kic_temp/php-4.3.9/ext/oci8/oci8.c:2715
#5 0x41142d83 in zif_ocilogon (ht=3, return_value=0x82176d4,
this_ptr=0x0, return_value_used=1)
at /root/kic_temp/php-4.3.9/ext/oci8/oci8.c:4340
#6 0x40c8e866 in execute (op_array=0x8212914) at
/root/kic_temp/php-4.3.9/Zend/zend_execute.c:1640
#7 0x40c81ea3 in zend_execute_scripts (type=8, retval=0x0,
file_count=3) at /root/kic_temp/php-4.3.9/Zend/zend.c:891
#8 0x40c5c563 in php_execute_script (primary_file=0xbffff6d0) at
/root/kic_temp/php-4.3.9/main/main.c:1735
#9 0x40c9315a in php_handler (r=0x820a698) at
/root/kic_temp/php-4.3.9/sapi/apache2handler/sapi_apache2.c:540
#10 0x0807c902 in ap_run_handler (r=0x820a698) at config.c:152
#11 0x0807ce1a in ap_invoke_handler (r=0x820a698) at config.c:363
#12 0x0806c5d3 in ap_process_request (r=0x820a698) at
http_request.c:246
#13 0x080686ad in ap_process_http_connection (c=0x82064b8) at
http_core.c:250
#14 0x08085ba6 in ap_run_process_connection (c=0x82064b8) at
connection.c:42
#15 0x0807b47b in child_main (child_num_arg=0) at prefork.c:609
#16 0x0807b626 in make_child (s=0x80ba0c8, slot=0) at prefork.c:649
#17 0x0807b67f in startup_children (number_to_start=8) at
prefork.c:721
#18 0x0807bd8d in ap_mpm_run (_pconf=0x807ae44, plog=0x80eda70,
s=0x80ba0c8) at prefork.c:940
#19 0x08080d42 in main (argc=2, argv=0xbffffa24) at main.c:617
#20 0x420158d4 in __libc_start_main () from /lib/i686/libc.so.6
(gdb)
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=31038&edit=1