ID: 38972 User updated by: masui at emplex dot co dot jp Reported By: masui at emplex dot co dot jp -Status: Feedback +Status: Open Bug Type: OCI8 related Operating System: linux PHP Version: 5.2.0RC4 New Comment:
I set NLS_LANG in /usr/local/apache2/bin/envvars. Following is my setting. export ORACLE_BASE=/home/oracle export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1 export NLS_LANG=.AL32UTF8 export PATH=$PATH:$ORACLE_HOME/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib export ORA_NLS10=$ORACLE_HOME/nls/data export LD_PRELOAD=$ORACLE_HOME/lib/libclntsh.so.10.1 I tested by access from web browser. Following is create table and insert data. CREATE TABLE LOBTEST ( LOBDATA CLOB ); insert INTO LOBTEST VALUES (UTL_RAW.CAST_TO_VARCHAR2('A3B0A3B1A3B2A3B3A3B4A3B5A3B6A3B7A3B8A3B9')); Previous Comments: ------------------------------------------------------------------------ [2006-09-27 10:04:45] [EMAIL PROTECTED] How did you set NLS_LANG? How do you test it? >Broken is only 64bit Linux only, 32bit linx is ok. I'm testing on 64bit host and it works perfectly fine with Oracle10g/UTF8. ------------------------------------------------------------------------ [2006-09-27 09:56:36] masui at emplex dot co dot jp Yes, I set ".AL32UTF8" to NLS_LANG. My CLOB data in Oracle is "ZêñOlÜZµªã". Broken is only 64bit Linux only, 32bit linx is ok. ------------------------------------------------------------------------ [2006-09-27 09:15:34] [EMAIL PROTECTED] Cannot reproduce. Make sure your NLS_LANG is set and equals to something similar to ".AL32UTF8". ------------------------------------------------------------------------ [2006-09-27 07:59:54] masui at emplex dot co dot jp Description: ------------ OCI-Lob->load returns broken character or nothing in php 5.2.0RC4. It is occurred in 64bit linux, in 32bit linux OCI-Lob->read returns correct multibyte string. My Oracle database is R10.2.0.2.0, charset is AL32UTF8. Downgrading to php 5.2.0RC1, it works correct, so this might be bug. Best regards Hideaki Masui Reproduce code: --------------- $conn = oci_connect('scot', 'tiger', 'xxx'); if (!$conn) exit; $query = 'SELECT LOBDATA FROM LOBTEST'; $stid = oci_parse($conn, $query); if (!$stid) exit; $r = oci_execute($stid, OCI_DEFAULT); if (!$r) exit; while ($row = oci_fetch_array($stid, OCI_RETURN_NULLS)) { echo $row['LOBDATA']->load() ."\n"; } oci_close($conn); Expected result: ---------------- The "echo $row['LOBDATA']->load();" line should return the actual mulitibyte string from the select statement. Actual result: -------------- $row['LOBDATA']->load() returns broken character or nothing. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=38972&edit=1