You might also wish to try using Env::C. I have had some weird cases where the perl %ENV looked ok, but the 'actual' environment was different.
allan On Thu, Apr 8, 2010 at 2:51 PM, Sven Miller <ngdvakigyot...@gmail.com> wrote: > NLS_LANG = en_GB.UTF-8 > > As I understand it, "UTF-8" is not a valid charset. It needs to be > either AL32UTF8, or UTF8 (no dash). There is a difference between the > two, and you probably want AL32UTF8, but I recommend researching the > difference. > > I know you said you tried changing this value, so this may not be the > solution. Just wanted to throw it out there. > > On Thu, Apr 8, 2010 at 2:21 PM, Alexander Foken <alexan...@foken.de> wrote: >> >> >> -------- Original Message -------- >> Subject: Re: failed: ERROR OCIEnvNlsCreate. Check (everything) >> Date: Thu, 8 Apr 2010 13:09:33 -0400 >> From: Perl Diety <misterp...@gmail.com> >> To: Alexander Foken <alexan...@foken.de> >> References: <q2sb914e70a1004060656o63d399f3le68b76b458079...@mail.gmail.com> >> <4bbc460f.5050...@easysoft.com> <4bbcf0b3.7010...@foken.de> >> >> >> >> I wrote the script to dump %ENV (in a MUCH more Perlish way than the apache >> version!) but yes, you're correct; I filtered out a lot of unrelated stuff >> to make the list more friendly. >> >> I don't think a linux apache server cares about *PATH* does it? Not sure. >> The message seemed to imply PATH was only used for WINDOWS servers? >> >> I'm *pretty sure* our ENV VARS for the LIBs and server correctly- because >> before we set them we were getting a DIFFERENT error (cant load Oracle.so). >> Now we're past that error onto the next one. So I think the ORACLE_HOME and >> LD paths are OK now. >> >> Its a preplexing problem with LOTS and LOTS of difffernt proposed fixes in >> the forums. I suspect that's because there are so many possible problems. >> >> As a programmer, I'm not dazzled by the error message. I would never present >> my users with a message like "it might be A, or possibly B, or something to >> do with C, or possibly SOMETHING ELSE".. >> >> Instead I would CHECK A, report an A error if found,. Check B, report a B >> error if found. And so on. Its unreasonable to expect a user to react to a >> message that basically says IT COULD BE ANYTHING! >> >> In this case, some users say check the locale, language settings, others say >> check LIB PATH. Others say its a DBI or DBD / Oracle version mismatch. SOme >> say its an Oracle 10 security issue and I need to run an Oracle script to >> un-harden it? >> >> I've encountered very few times in my 20 years as a programmer where ONE >> error could be caused by so many possibilities. After like 4 man-weeks, >> we're still fumbling with it. >> >> Thanks! >> MP >> >> >> >> >> On Wed, Apr 7, 2010 at 4:53 PM, Alexander Foken <alexan...@foken.de >> <mailto:alexan...@foken.de>> wrote: >> >> On 07.04.2010 10:45, Martin Evans wrote: >> >> Perl Diety wrote: >> >> ENV VARS >> >> DOCUMENT_ROOT = /var2/www/html >> GATEWAY_INTERFACE = CGI/1.1 >> HTTP_ACCEPT = */* >> HTTP_ACCEPT_ENCODING = gzip, deflate >> HTTP_ACCEPT_LANGUAGE = en-us >> HTTP_HOST = ournode.com <http://ournode.com> >> HTTP_UA_CPU = x86 >> HTTP_USER_AGENT = Mozilla/4.0 >> LD_LIBRARY_PATH = /export/apps/oracle/product/10201/lib >> LD_RUN_PATH = /export/apps/oracle/product/10201/lib >> NLS_LANG = en_GB.UTF-8 >> ORACLE_BASE = /export/apps/oracle >> ORACLE_HOME = /export/apps/oracle/product/10201 >> ORA_NLS10 = /export/apps/oracle/product/10201/nls/data/ >> REQUEST_METHOD = GET >> REQUEST_URI = /cgi-bin/oratest.cgi >> SERVER_PORT = 80 >> SERVER_PROTOCOL = HTTP/1.1 >> SERVER_SIGNATURE = >> >> Apache/2.0.52 (Red Hat) Server at ournode.com >> <http://ournode.com> Port 80 >> >> SERVER_SOFTWARE = Apache/2.0.52 (Red Hat) >> DBI connect(...) failed: ERROR OCIEnvNlsCreate. Check >> ORACLE_HOME (Linux) >> env var or PATH (Windows) and or NLS settings, permissions, >> etc. at >> /cgi-bin/oratest.cgi line 32 >> >> >> This looks roughly like a CGI enviromnent, and the Oracle Variables >> seem to be set. But lots of variables seem to be missing, like PATH >> and some variabes starting with HTTP_, SERVER_, SCRIPT_, and >> REQUEST_. And the LD_xxx variables shouldn't be there. >> >> If this is the *complete* environment provided to the CGI, something >> is *very* wrong with the Apache. >> >> If not, post a complete dump of %ENV in CGI context, e.g. with the >> printenv script that came with Apache: >> >> #!/usr/local/bin/perl >> ## >> ## printenv -- demo CGI program which just prints its environment >> ## >> >> print "Content-type: text/plain; charset=iso-8859-1\n\n"; >> foreach $var (sort(keys(%ENV))) { >> $val = $ENV{$var}; >> $val =~ s|\n|\\n|g; >> $val =~ s|"|\\"|g; >> print "${var}=\"${val}\"\n"; >> >> } >> >> >> >> Did you really set AND export ORACLE_HOME or LD_LIBRARY_PATH >> such that >> Apache children see them? I can't remember what the syntax in the >> httpd.conf file is now (SetEnv perhaps) as I no longer use >> Apache but >> you used to have to explicitly tell Apache which env vars to allow. >> >> Martin >> >> Two ways: >> >> 1. PassEnv VariableName [...] -- see >> <http://httpd.apache.org/docs/2.2/mod/mod_env.html#passenv> >> 2. SetEnv VariableName Value -- see >> <http://httpd.apache.org/docs/2.2/mod/mod_env.html#setenv> >> >> I prefer PassEnv over SetEnv when the variables already exist in the >> environment of the process invoking the Apache server. That way, I >> don't have to change the Apache configuration when an environment >> variable changes. I use SetEnv only to set additional variables that >> must not appear in the environment of the process invoking the >> Apache server. >> >> See also >> >> <http://alexander-foken.de/Censored%20copy%20of%20Oracle%20Troubleshooter%20HOWTO.html> >> >> Alexander >> >> -- Alexander Foken >> mailto:alexan...@foken.de <mailto:alexan...@foken.de> >> http://www.foken.de/alexander/ >> >> >> >> -- >> Alexander Foken >> mailto:alexan...@foken.de http://www.foken.de/alexander/ >> >> >> > -- "The truth is an offense, but not a sin"