sql >> Base de Datos >  >> RDS >> Oracle

Oracle 11g PHP oci_connect falla OCIEnvNlsCreate ()

¿Ha fallado OCIEnvNlsCreate()? Bienvenido al infierno...

Sé que el hilo es antiguo, pero el problema sigue presente. Y, por lo general, las respuestas a este problema redirigen a sitios de terceros, generalmente 404.

Comencemos con el problema. El error en sí es bastante genérico. Su documentación se resume en "lib bloqueado... no sé por qué". Existe una amplia gama de soluciones que incluyen, entre otras, configurar, reinstalar y rezar para "insertar aquí el nombre de un dios al azar".

Aquí hay una breve lista de las soluciones más comunes:

1. Ponga la variable en su archivo .php.

    putenv("LD_LIBRARY_PATH=$newld");

where $newld is the link to your library.

2. Elimina la variable LD_LIBRARY_PATH , si existe (sí, la forma en que se mostró en 1.), desde su archivo php y colóquelo en su apache2.conf o httpd.conf o /etc/environment o cualquier archivo que tenga su distribución/versión para las variables de entorno. Puede encontrar una guía sencilla aquí o en todas partes en Internet. ¿Por qué?

como se indica en los documentos de instalación. También reinicie Apache después. Está basado en distribución/versión, pero lo más probable es que el comando sea service httpd restart .

  1. Reinstalar oci8 . Tantas veces como sea necesario. No lo fuerces. Forzar solo lo empeora. Además, intente compilarlo (también conocido como descargar el paquete use ./configure -'all the fancy commands you'll need to use' y luego make install ).

  2. Asegúrate de tener el LD_LIBRARY_PATH correcto . Es divertido decirlo, ¿verdad? Probablemente no notó que Oracle creó la carpeta client/lib/ en N ubicaciones diferentes que contiene más o menos los mismos archivos, y la única diferencia entre ellos es que seleccionar todas menos una de esas carpetas resultará en el error mencionado . ¿Comprobación de cordura?

  3. Reinstalar php/apache . Es probable que tenga alguna instalación antigua que esté causando problemas. Así que usa apt-get purge php* o yum remove php* o lo que sea que haga el mismo truco para su distribución, será un buen comienzo.

EDITAR Después de la actualización de PHP, el problema volvió a ocurrir, esta vez con una solución diferente.

  1. EDITAR CONFIGURACIÓN DEL SISTEMA Edite el archivo /etc/sysconfig/httpd. Agregue esas 2 líneas al final:

    exportar LD_LIBRARY_PATH=/ruta/a.libexport ORACLE_HOME=/ruta/a/inicio

  2. RENUNCIA Y LEE EL MANUAL se puede encontrar aquí .

Si nada de eso te ayuda, siéntete libre de explorar el muro del dolor , para una solución...