Re: [PHP-DB] oci_connect returns warning if provided with the 4th param(charset)
Hi Chris, Thank you very much for the info. I found that there wasn't a library called 'libociei.so' on my server compared with the lastest Oracle Instant Client. I copied it to my server and then I found oci_connect(,,,'UTF8') worked! I didn't know why but I thought you were right that my prior OCI just supported a restricted set of character set. Thank you very much! Regards, Tonado Christopher Jones christopher.jo...@oracle.com ??:49500cc3.8090...@oracle.com... Tonado wrote: Hi all, I used the following in my code oci_connect('$user','$pass',$connectionString,'UTF8'); and got the following warning: Warning: oci_connect() [function.oci-connect]: Invalid character set name: UTF8 I tried many times and found it could only work when I removed 'UTF8' or replaced it with 'US7ASCII'. It didn't work even I used 'WE8ISO8859P1'. But I had to use 'UTF8' in order to support multiple bytes. I had tried setting NLS_LANG to AMERICAN_AMERICA.UTF8 in envvars instead of using the 4th parameter in oci_connect, but it didn't work. Using putenv to set NLS_LANG didn't work either. Did you build PHP with Oracle XE libraries? Some versions of Oracle libraries support a restricted set of character sets to reduce size. For example, Oracle Instant Client Basic Lite has only English error messages and Unicode, ASCII, and Western European character set support. Oracle XE comes in two bundles, one supporting only the character set WE8MSWIN1252, the other AL32UTF8. See http://www.oracle.com/technology/software/products/database/xe/files/install.102/b25144/toc.htm#BABJACJJ Oracle's general name for UTF8 is AL32UTF8. A list of character set names is at: http://download.oracle.com/docs/cd/B28359_01/server.111/b28298/applocaledata.htm#i635047 Does anyone encounter this weird issue before? The php version I'm using is 5.2.1. PHP 5.2.1 is old now, and there have been many updates. If possible upgrade PHP. For all 5.2.x versions (including 5.2.8) I would upgrade at least the OCI8 extension to version 1.3. See http://pecl.php.net/package/oci8 Instructions are in http://tinyurl.com/UGPOM Chris -- Email: christopher.jo...@oracle.com Tel: +1 650 506 8630 Twitter: http://twitter.com/ghrdFree PHP Book: http://tinyurl.com/UGPOM -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-DB] oci_connect returns warning if provided with the 4th param(charset)
Hi all, I used the following in my code oci_connect('$user','$pass',$connectionString,'UTF8'); and got the following warning: Warning: oci_connect() [function.oci-connect]: Invalid character set name: UTF8 I tried many times and found it could only work when I removed 'UTF8' or replaced it with 'US7ASCII'. It didn't work even I used 'WE8ISO8859P1'. But I had to use 'UTF8' in order to support multiple bytes. I had tried setting NLS_LANG to AMERICAN_AMERICA.UTF8 in envvars instead of using the 4th parameter in oci_connect, but it didn't work. Using putenv to set NLS_LANG didn't work either. Does anyone encounter this weird issue before? The php version I'm using is 5.2.1. Thanks for any help. -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-DB] oci_connect returns warning if provided with the 4th param(charset)
Tonado wrote: Hi all, I used the following in my code oci_connect('$user','$pass',$connectionString,'UTF8'); and got the following warning: Warning: oci_connect() [function.oci-connect]: Invalid character set name: UTF8 I tried many times and found it could only work when I removed 'UTF8' or replaced it with 'US7ASCII'. It didn't work even I used 'WE8ISO8859P1'. But I had to use 'UTF8' in order to support multiple bytes. I had tried setting NLS_LANG to AMERICAN_AMERICA.UTF8 in envvars instead of using the 4th parameter in oci_connect, but it didn't work. Using putenv to set NLS_LANG didn't work either. Did you build PHP with Oracle XE libraries? Some versions of Oracle libraries support a restricted set of character sets to reduce size. For example, Oracle Instant Client Basic Lite has only English error messages and Unicode, ASCII, and Western European character set support. Oracle XE comes in two bundles, one supporting only the character set WE8MSWIN1252, the other AL32UTF8. See http://www.oracle.com/technology/software/products/database/xe/files/install.102/b25144/toc.htm#BABJACJJ Oracle's general name for UTF8 is AL32UTF8. A list of character set names is at: http://download.oracle.com/docs/cd/B28359_01/server.111/b28298/applocaledata.htm#i635047 Does anyone encounter this weird issue before? The php version I'm using is 5.2.1. PHP 5.2.1 is old now, and there have been many updates. If possible upgrade PHP. For all 5.2.x versions (including 5.2.8) I would upgrade at least the OCI8 extension to version 1.3. See http://pecl.php.net/package/oci8 Instructions are in http://tinyurl.com/UGPOM Chris -- Email: christopher.jo...@oracle.com Tel: +1 650 506 8630 Twitter: http://twitter.com/ghrdFree PHP Book: http://tinyurl.com/UGPOM -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-DB] oci_connect returns warning if provided with the 4th param(charset)
Tonado wrote: Hi all, I used the following in my code oci_connect('$user','$pass',$connectionString,'UTF8'); and got the following warning: Warning: oci_connect() [function.oci-connect]: Invalid character set name: UTF8 I tried many times and found it could only work when I removed 'UTF8' or replaced it with 'US7ASCII'. It didn't work even I used 'WE8ISO8859P1'. But I had to use 'UTF8' in order to support multiple bytes. I had tried setting NLS_LANG to AMERICAN_AMERICA.UTF8 in envvars instead of using the 4th parameter in oci_connect, but it didn't work. Using putenv to set NLS_LANG didn't work either. Try 'AL32UTF8'. The oracle db has to be set up to allow those sort of chars too when you create it, you can't convert it (everything I found says you have to do a dump/recreate the db/import the data). http://www.oracle.com/technology/tech/globalization/htdocs/nls_lang%20faq.htm -- Postgresql php tutorials http://www.designmagick.com/ -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-DB] oci_connect
IT WORKS! in the file /etc/rc.d/init.d/httpd I inserted statements starting with export position indicated by the surrounding code. # Path to the apachectl script, server binary, and short-form for messages. apachectl=/usr/sbin/apachectl httpd=${HTTPD-/usr/sbin/httpd} prog=httpd pidfile=${PIDFILE-/var/run/httpd.pid} lockfile=${LOCKFILE-/var/lock/subsys/httpd} RETVAL=0 # new statements here export ORACLE_HOSTNAME=localhost.localdomain export TNS_ADMIN=/u01/app/oracle/product/11.1.0/db_1/network/admin export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1 export ORACLE_SID=LMKIIIGDNSID export LD_LIBRARY_PATH /u01/app/oracle/product/11.1.0/db_1/lib:/lib:/usr/lib # new statements above # The semantics of these two functions differ from the way apachectl does # things -- attempting to start while running is a failure, and shutdown # when not running is also a failure. So we just do it the way init scripts # are expected to behave here. start() { echo -n $Starting $prog: LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS RETVAL=$? echo [ $RETVAL = 0 ] touch ${lockfile} return $RETVAL } --- On Fri, 11/21/08, Christopher Jones [EMAIL PROTECTED] wrote: From: Christopher Jones [EMAIL PROTECTED] Subject: Re: [PHP-DB] oci_connect To: [EMAIL PROTECTED] Date: Friday, November 21, 2008, 12:56 AM Unfortunately this is not the section titled Environment. I'm hopping on a flight and will almost certainly not be able to read email until the end of next week. Please follow my suggestion in the post below about setting variables. Chris Fred Silsbee wrote: Apache Environment VariableValue ORACLE_HOSTNAME localhost.localdomain TNS_ADMIN /u01/app/oracle/product/11.1.0/db_1/network/admin ORACLE_BASE /u01/app/oracle ORACLE_HOME /u01/app/oracle/product/11.1.0/db_1 ORACLE_SID lmkiiiGDNSID ORACLE_TERM xterm LD_LIBRARY_PATH /u01/app/oracle/product/11.1.0/db_1/lib:/lib:/usr/lib HTTP_HOST localhost:8080 HTTP_USER_AGENT Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4) Gecko/2008111217 Fedora/3.0.4-1.fc9 Firefox/3.0.4 HTTP_ACCEPT text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 HTTP_ACCEPT_LANGUAGEen-us,en;q=0.5 HTTP_ACCEPT_ENCODINGgzip,deflate HTTP_ACCEPT_CHARSET ISO-8859-1,utf-8;q=0.7,*;q=0.7 HTTP_KEEP_ALIVE 300 HTTP_CONNECTION keep-alive PATH/sbin:/usr/sbin:/bin:/usr/bin SERVER_SIGNATUREaddressApache/2.2.9 (Fedora) Server at localhost Port 8080/address SERVER_SOFTWARE Apache/2.2.9 (Fedora) SERVER_NAME localhost SERVER_ADDR 127.0.0.1 SERVER_PORT 8080 REMOTE_ADDR 127.0.0.1 DOCUMENT_ROOT /var/www/html SERVER_ADMIN[EMAIL PROTECTED] SCRIPT_FILENAME /var/www/html/phpinfo.php REMOTE_PORT 56423 GATEWAY_INTERFACE CGI/1.1 SERVER_PROTOCOL HTTP/1.1 REQUEST_METHOD GET QUERY_STRINGno value REQUEST_URI /phpinfo.php SCRIPT_NAME /phpinfo.php --- On Thu, 11/20/08, Christopher Jones [EMAIL PROTECTED] wrote: From: Christopher Jones [EMAIL PROTECTED] Subject: Re: [PHP-DB] oci_connect To: [EMAIL PROTECTED] Date: Thursday, November 20, 2008, 5:15 AM Fred Silsbee wrote: what information did you request??? See the sentence in my previous post that ends in a question mark. Chris --- On Thu, 11/20/08, Christopher Jones [EMAIL PROTECTED] wrote: From: Christopher Jones [EMAIL PROTECTED] Subject: Re: [PHP-DB] oci_connect To: [EMAIL PROTECTED] Cc: php-db@lists.php.net Date: Thursday, November 20, 2008, 1:57 AM Fred Silsbee wrote: I have the following in /etc/httpd/conf/httpd.conf SetEnv ORACLE_HOSTNAME localhost.localdomain SetEnv TNS_ADMIN /u01/app/oracle/product/11.1.0/db_1/network/admin SetEnv ORACLE_BASE /u01/app/oracle SetEnv ORACLE_HOME /u01/app/oracle/product/11.1.0/db_1 SetEnv ORACLE_SID lmkiiiGDNSID SetEnv ORACLE_TERM xterm SetEnv LD_LIBRARY_PATH /u01/app/oracle/product/11.1.0/db_1/lib:/lib:/usr/lib I personally don't set them in httpd.conf because I don't believe putting them there works consistently across platforms. And we can't cross check your site because you haven't yet mailed the information I requested in more than one email/post. And I really doubt LD_LIBRARY_PATH being set before Apache executable starts is a good idea. I strongly suggest you set the environment in the shell that starts Apache: export ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1 export ORACLE_SID=lmkiiiGDNSID export LD_LIBRARY_PATH /u01/app/oracle/product/11.1.0/db_1/lib:/lib:/usr/lib /usr/sbin/apachectl start (The other variables aren't needed) You may need to make sure these are set
[PHP-DB] oci_connect
I have the following in /etc/httpd/conf/httpd.conf SetEnv ORACLE_HOSTNAME localhost.localdomain SetEnv TNS_ADMIN /u01/app/oracle/product/11.1.0/db_1/network/admin SetEnv ORACLE_BASE /u01/app/oracle SetEnv ORACLE_HOME /u01/app/oracle/product/11.1.0/db_1 SetEnv ORACLE_SID lmkiiiGDNSID SetEnv ORACLE_TERM xterm SetEnv LD_LIBRARY_PATH /u01/app/oracle/product/11.1.0/db_1/lib:/lib:/usr/lib but showing in phpinfo is: oci8 OCI8 Supportenabled Version 1.3.4 Revision$Revision: 1.269.2.16.2.38.2.20 $ Active Persistent Connections 0 Active Connections 0 Compile-time ORACLE_HOMEno value ?? Libraries Used no value Temporary Lob support enabled Collections support enabled Directive Local Value Master Value oci8.connection_class no valueno value oci8.default_prefetch 100 100 oci8.events Off Off oci8.max_persistent -1 -1 oci8.old_oci_close_semanticsOff Off oci8.persistent_timeout -1 -1 oci8.ping_interval 60 60 oci8.privileged_connect Off Off oci8.statement_cache_size 20 20 NOTHING about Oracle in php.ini but there is a section about MySQL -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-DB] oci_connect
Fred Silsbee wrote: I have the following in /etc/httpd/conf/httpd.conf SetEnv ORACLE_HOSTNAME localhost.localdomain SetEnv TNS_ADMIN /u01/app/oracle/product/11.1.0/db_1/network/admin SetEnv ORACLE_BASE /u01/app/oracle SetEnv ORACLE_HOME /u01/app/oracle/product/11.1.0/db_1 SetEnv ORACLE_SID lmkiiiGDNSID SetEnv ORACLE_TERM xterm SetEnv LD_LIBRARY_PATH /u01/app/oracle/product/11.1.0/db_1/lib:/lib:/usr/lib I personally don't set them in httpd.conf because I don't believe putting them there works consistently across platforms. And we can't cross check your site because you haven't yet mailed the information I requested in more than one email/post. And I really doubt LD_LIBRARY_PATH being set before Apache executable starts is a good idea. I strongly suggest you set the environment in the shell that starts Apache: export ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1 export ORACLE_SID=lmkiiiGDNSID export LD_LIBRARY_PATH /u01/app/oracle/product/11.1.0/db_1/lib:/lib:/usr/lib /usr/sbin/apachectl start (The other variables aren't needed) You may need to make sure these are set at boot time, if you Apache starts at machine boot. but showing in phpinfo is: oci8 OCI8 Support enabled Version1.3.4 Revision $Revision: 1.269.2.16.2.38.2.20 $ Active Persistent Connections 0 Active Connections 0 Compile-time ORACLE_HOME no value ?? Libraries Used no value Temporary Lob support enabled Collections supportenabled Directive Local Value Master Value oci8.connection_class no valueno value oci8.default_prefetch 100 100 oci8.eventsOff Off oci8.max_persistent-1 -1 oci8.old_oci_close_semantics Off Off oci8.persistent_timeout-1 -1 oci8.ping_interval 60 60 oci8.privileged_connectOff Off oci8.statement_cache_size 20 20 These values are not relevant to your problem. What is in the section with the heading Environment? Check for the ORACLE_HOME and ORACLE_SID variables there. On RHEL 5.2, if I use SetEnv in httpd.conf, I only see the variables in the Apache Environment section and not the Environment section of phpinfo(). NOTHING about Oracle in php.ini but there is a section about MySQL That's fine. Nothing needs to be set. Everything has a default. You can see the defaults in phpinfo output, and they are mostly tuning settings. You can add any configuration setting you want to change. Nothing there will affect a basic connection test script like the one you previously posted. Chris -- Email: [EMAIL PROTECTED] Tel: +1 650 506 8630 Twitter: http://twitter.com/ghrdFree PHP Book: http://tinyurl.com/f8jad -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-DB] oci_connect
On Wed, Nov 19, 2008 at 8:15 PM, Fred Silsbee [EMAIL PROTECTED] wrote: [snip!] Fred, Please keep all of your posts in the same thread with the same subject. You're making it very difficult for others to follow along with your ramblings, and seem to even be confusing yourself a bit. Chris has been trying to get the information he needs from you, but it looks like you're running over yourself. It happens with frustration, I completely understand. ;-P Keep everything in one thread so that it's easy to follow and so that Chris and others can help you out. Once you get the information sorted out in one linear fashion, I think you'll find the problems aren't as serious as you might have thought. And if they are, then we can all help you to solve them. -- /Daniel P. Brown http://www.parasane.net/ [EMAIL PROTECTED] || [EMAIL PROTECTED] Ask me about our current hosting/dedicated server deals! -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-DB] oci_connect still not working...I added a debug statement
errors are : OCI8 DEBUG: OCINlsEnvironmentVariableGet at (/home/oracle/oci8/oci8-1.3.4/oci8.c:1819) OCI8 DEBUG L1: Got NO cached connection at (/home/oracle/oci8/oci8-1.3.4/oci8.c:1864) OCI8 DEBUG: OCIEnvNlsCreate at (/home/oracle/oci8/oci8-1.3.4/oci8.c:2768) OCI8 DEBUG L1: create_spool: (0) at (/home/oracle/oci8/oci8-1.3.4/oci8.c:2686) Oracle Connect Error (nothing here from the error statement! ?php // File: anyco.php require('anyco_ui.inc'); $db = (LMKIIIGD = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = lmkiiiGDN) ) ) ) ; oci_internal_debug(1); // turn on tracing // Create a database connection // $conn = oci_connect('hr', 'hr', 'xe'); // $conn = oci_connect('hr', 'hr', 'lmkiiiGDNSID'); // $conn = oci_connect('hr', 'hr', '//localhost:8080/lmkiiiGDNSID'); // $conn = oci_connect('hr', 'hr', '//localhost/lmkiiiGDNSID'); // $conn = oci_connect(hr, hr, //dwlin165.us.oracle.com/lmkiiiGDNSID); // $conn = oci_connect('hr', 'hr',$db); if ($conn=oci_connect('hr', 'hr', $db)) { echo Successfully connected to Oracle.\n; // OCILogoff($conn); } else { $err = OCIError(); echo Oracle Connect Error . $err['message']; } ui_print_header('Departments'); do_query($conn, 'SELECT * FROM DEPARTMENTS'); ui_print_footer(date('Y-m-d H:i:s')); // Execute query and display results function do_query($conn, $query) { $stid = oci_parse($conn, $query); $r = oci_execute($stid, OCI_DEFAULT); print 'table border=1'; while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) { print 'tr'; foreach ($row as $item) { print 'td'. ($item ? htmlentities($item) : 'nbsp;').'/td'; } print '/tr'; } print '/table'; } ? -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-DB] oci_connect still not working...I added a debug statement
oci_internal_debug(1); // turn on tracing // Create a database connection // $conn = oci_connect(hr, hr, //dwlin165.us.oracle.com/lmkiiiGDNSID); That definitely won't work.. // $conn = oci_connect('hr', 'hr',$db); try oci_connect('hr', 'hr', '//localhost/xe'); I assume you unlocked the 'hr' account? See page 35 of http://www.oracle.com/technology/tech/php/pdf/underground-php-oracle-manual.pdf -- Postgresql php tutorials http://www.designmagick.com/ -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php