Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle 11g PHP oci_connect falha OCIEnvNlsCreate()


O OCIEnvNlsCreate() falhou? Bem-vindo ao inferno...

Eu sei que o tópico é antigo, mas o problema ainda está presente. E geralmente as respostas para esse problema redirecionam para sites de terceiros, geralmente 404s.

Vamos começar com o problema. O erro em si é bastante genérico. Sua documentação resume-se a "lib caiu... não sei por quê". Há uma ampla gama de soluções, incluindo, mas não se limitando a configurar, reinstalar e orar para "inserir nome de deus aleatório aqui".

Aqui está uma pequena lista das soluções mais comuns:

1. Coloque a variável em seu arquivo .php.
    putenv("LD_LIBRARY_PATH=$newld");

where $newld is the link to your library.

2. Remova a variável LD_LIBRARY_PATH , se existir (sim, do jeito que foi mostrado em 1.), do seu arquivo php e coloque-o em seu apache2.conf ou httpd.conf ou /etc/environment ou qualquer arquivo que sua distribuição/versão tenha para as variáveis ​​de ambiente. Um guia simples pode ser encontrado aqui ou em qualquer lugar na internet. Por quê?

conforme indicado nos documentos de instalação. Também reinicie o apache depois. É baseado em distribuição/versão, mas provavelmente o comando é service httpd restart .

  1. Reinstale o oci8 . Quantas vezes for preciso. Não force. Forçar só piora. Além disso, tente compilá-lo (também conhecido como baixar o pacote use ./configure -'all the fancy commands you'll need to use' e então make install ).

  2. Certifique-se de ter o LD_LIBRARY_PATH correto . Coisa engraçada de se dizer, certo? Você provavelmente não percebeu que a oracle criou a pasta client/lib/ em N locais diferentes que contém mais ou menos os mesmos arquivos, e a única diferença entre eles é que escolher todas, exceto uma dessas pastas, resultará no erro mencionado . Verificação de sanidade?

  3. Reinstale o php/apache . É provável que você tenha alguma instalação antiga que esteja causando problemas. Então use apt-get purge php* ou yum remove php* ou o que quer que faça o mesmo truque para sua distribuição, será um bom começo.

EDITAR Após a atualização do PHP, o problema voltou a ocorrer, desta vez com uma solução diferente.

  1. EDITAR CONFIGURAÇÃO DO SISTEMA Edite o arquivo /etc/sysconfig/httpd. Adicione essas 2 linhas no final:

    export LD_LIBRARY_PATH=/path/to.libexport ORACLE_HOME=/path/to/home

  2. DESISTA E LEIA O MANUAL ele pode ser encontrado aqui .

Se nada disso ajudar, sinta-se à vontade para navegar no muro da tristeza , para uma solução...