Pregunta

Actualización (21/05/2010) ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡

Entonces, después de mucho $ Head-> Desk () 'ing, lo he resuelto.

¡Recuerde a los niños, ten cuidado con la versión instantánea del cliente que usa, dependiente de la configuración de virtualización!

Había estado instalando el cliente instantáneo genérico (sin saber que nuestros servidores ESX se sientan en procesadores AMD, no Intel) y eso funcionó bien internamente (la instalación de CentOS fue de 32 bits ya que nuestros servidores ESXi internos no son de 64 bits). Bueno, lo que tiene, incluso si tiene una instalación de 32 bits que se ejecuta en un servidor virtualizado que se encuentra en un AMD64, todavía importa qué cliente instantáneo instale.

Fue lo último que pensé en comprobar, pero como parece, todo está funcionando bien ahora.

Me gustaría agradecer a todos los que me ayudaron a realizar todas las pruebas posibles para resolver esto, pero al final, fue mi culpa por no darme cuenta de las diferencias en las virtualizaciones.


Actualización (21/05/2010)Pensé que este error me había escapado cuando lo instalé en una nueva VM internamente, pero ahora he encontrado un enlace estrecho.

Estaba tratando de instalar esto en nuestro servidor de producción cuando publiqué esto. Después de una semana sin progreso y necesidad de volver al desarrollo, equipé una VM en nuestro servidor interno con una nueva instalación de basura ... CentOS e instalaciones nuevas de Client Instant y OCI8.

Funcionó perfectamente.

Sin embargo, acabamos de subir una copia exacta de la VM a nuestros servidores de producción y mágicamente ya no funciona. Intenté reinstalar todo, sin éxito.

Entonces, lo único que podría reducirlo es un problema de firewall (aunque tengo el mismo problema al intentar 127.0.0.1) o posiblemente un problema de servidor ESX (nuestros servidores de producción), los servidores internos están ejecutando ESXi.

¿Alguna idea?

Actualización (8/8/2010) Instalé xdebug y lo tengo rastreando mi código. Esta es la salida que estoy obteniendo:

TRACE START [2010-03-08 17:53:05]
    0.2090     327864   -> {main}() /data/aims3/http/octest.php:0
    0.2091     327988     -> ini_set(string(14), string(1)) /data/aims3/http/octest.php:3
    0.2093     327920     -> error_reporting(long) /data/aims3/http/octest.php:4
    0.2094     328048     -> oci_connect(string(8), string(8), string(25)) /data/aims3/http/octest.php:6

El rastro se detiene en ese punto.

He instalado todo de la misma manera en un servidor local y funciona bien. Decir que estoy en una pérdida completa lo pondría a la ligera.


*NOTA: Ejecuté la prueba de hacer y devolvió el fracaso en cada prueba. Nunca ejecuté esto en mi máquina de trabajo para ver si informa los mismos errores. ¿Alguna idea de por qué hacer la prueba informaría que falla pero no informa ningún error?

Instalé el Oracle InstantClient sin errores reportados junto con el paquete OCI8 PECL y con una pérdida. Cada vez que intento abrir una conexión con OCI_Connect, detiene todo mi script PHP.

EJEMPLO:

<?php
ini_set ("display_errors", "1");
error_reporting(E_ALL);
echo "before";
$conn = oci_connect("username", "password", "host");
echo "after";
?>

Devuelve una página completa en blanco. El módulo está cargado (visto en Phpinfo) y todo instalado sin errores.

Estoy en una pérdida completa.

CentOS: 5.4

Apache: 2.2.3

PHP: 5.3.1

InstantClient: 11.2

OCI8: 1.4.1

¿Alguna idea?

Notas

El registro de errores de Apache no informa nada

Intento de depuración:

1:

<?php
ini_set ("display_errors", "1");
error_reporting(E_ALL);
echo "before";
if(!function_exists('oci_connect')) die('Oracle Not Installed');
echo "after";
?>

Devoluciones:

beforeafter

2:

Cambiando el host a // host

Devoluciones:

Mismo error

¿Fue útil?

Solución 5

Se ha solucionado. Vea la parte superior para obtener más detalles, pero aquí están las notas del acantilado: los entornos de virtualización son importantes.

Otros consejos

¿Hay algo en el error_log de Apache? ¿Es esto MOD_PHP o FastCGI o CGI Normal PHP? ¿Qué sucede si ejecuta el script a través de la línea de comando?

También podrías intentar configurar Registro de errores de PHP y mirando allí.


Edición1: Probar:

echo "before";
if(!function_exists('oci_connect')) die('Oracle Not Installed');

Y publique los resultados ...


Edit2: Realmente no estoy seguro. Mi mejor apuesta es esta información de el manual de PHP:

El problema más común con la instalación de OCI8 es no tener el entorno Oracle configurado correctamente. Esto típicamente aparece como un problema usando OCI_Connect () u OCI_PConnect (). El error puede ser un error PHP, como la llamada a la función indefinida, OCI_CONNECT (), un error de Oracle como ORA-12705 o incluso un bloqueo de Apache. Verifique los archivos de registro de Apache para los errores de inicio y vea las secciones anteriores para resolver este problema.

¿Alguien más tiene alguna idea para ayudar a Bryan?

Bryan,

Voy a ser honesto: intenté esto hace dos años y fallé miserablemente. :) No pude hacer que las funciones de OCI funcionen para cualquier cosa al compilarme.

Pero en aras de hacerlo, busqué una solución alternativa y la encontré en Zend Core para Oracle. Todo lo que hice fue descargar, ejecutar el instalador, y estaba hecho. Instala Apache/PHP, MySQL (opcional) y el InstantClient para usted.

Ahora como servidor Zend, es básicamente el mismo producto. Me doy cuenta de que esta puede no ser la solución que esperaba, pero si funciona ...

Servidor zend

¿Te estás conectando a DB remoto o local? Creo que, para localhost, debes reemplazar "host" con "falso". Espero que esto ayude...

EDITAR: Creo que le falta un parámetro ... Mis últimas sugerencias son: 1. Debe establecer el puerto (predeterminado 1521) y/o 2. debe ingresar el nombre de DB y/o debe establecer el nombre de la instancia (el Parámetro oracle_sid)

Nunca verifica el valor de retorno de OCI_Connect () o llame a Oci_error () pero no parece relevante para su problema, ya que parece estar sufriendo un bloqueo de PHP. Hay un error abierto para Rhel que también puede afectarlo:

http://pecl.php.net/bugs/bug.php?id=16626

¿Construyó el paquete OCI8 usted mismo? ¿Estás usando un binario de terceros?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top