Domanda

Aggiornamento (21/05/2010) Successo!

Quindi, dopo molto $ head-> desk () 'ing, l'ho risolto.

Ricorda i bambini, diffida della versione istantanea client che usi, dipendente dalle impostazioni di virtualizzazione!

Avevo installato il client istantaneo generico (non a conoscenza dei nostri server ESX seduti su processori AMD, non Intel) e che ha funzionato bene internamente (l'installazione CentOS era a 32 bit poiché i nostri server ESXI interni non sono 64 bit). Bene, anche se hai un'installazione a 32 bit in esecuzione su un server virtualizzato che è seduto su un AMD64, importa ancora quale client istantaneo installi.

È stata l'ultima cosa che ho pensato di controllare, ma come sembra, tutto funziona bene ora.

Vorrei ringraziare tutti coloro che mi hanno aiutato a eseguire ogni possibile test per capirlo, ma alla fine è stata colpa mia per non aver realizzato le differenze nelle virtualizzazioni.


AGGIORNAMENTO (21/05/2010)Pensavo che questo bug mi fosse sfuggito quando l'ho installato su una nuova VM internamente, ma ora ho trovato un collegamento di restringimento.

Stavo cercando di installarlo sul nostro server di produzione quando ho pubblicato questo. Dopo una settimana senza progressi e ho bisogno di tornare allo sviluppo, ho equipaggiato una VM sul nostro server interno con una nuovissima installazione di centesimi ... Centro e nuove installazioni di client istantaneo e OCI8.

Ha funzionato perfettamente.

Tuttavia, abbiamo appena caricato una copia esatta della VM ai nostri server di produzione e magicamente non funziona più. Ho provato a reinstallare tutto, in nessun modo.

Quindi le uniche cose a cui potrei restringerlo è un problema del firewall (anche se ho lo stesso problema quando provo 127.0.0.1) o possibilmente un problema di server ESX (i nostri server di produzione), i server interni eseguono ESXi.

qualche idea?

Aggiornamento (3/8/2010) Ho installato Xdebug e l'ho tracciato il mio codice. Questo è l'output che sto ottenendo:

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

La traccia si ferma a quel punto.

Ho installato tutto allo stesso modo su un server locale e funziona bene. Dire che ho una perdita completa lo metterebbe leggermente.


*NOTA: Ho eseguito il test e ha restituito il fallimento in ogni test. Non l'ho mai eseguito sul mio computer di lavoro per vedere se riporta gli stessi errori. Qualche idea sul fatto che fare test non riestrerebbe ma fare non segnalare alcun errore?

Ho installato Oracle InstantClient senza errori segnalati insieme al pacchetto OCI8 PECL e in perdita. Ogni volta che provo ad aprire una connessione con OCI_Connect, interrompe il mio intero script PHP.

ESEMPIO:

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

Restituisce una pagina vuota completa. Il modulo viene caricato (visto in PhpInfo) e tutto installato senza errori.

Ho una perdita completa.

Centro: 5.4

Apache: 2.2.3

PHP: 5.3.1

InstantClient: 11.2

OCI8: 1.4.1

qualche idea?

APPUNTI

Il registro degli errori di Apache non segnala nulla

Tentativo di debug:

1:

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

Ritorna:

beforeafter

2:

Cambiare host in // host

Ritorna:

Stesso errore

È stato utile?

Soluzione 5

È stato risolto. Vedi la parte superiore per i dettagli, ma ecco le note di scogliera: gli ambienti di virtualità contano.

Altri suggerimenti

C'è qualcosa nell'errore_log di Apache? Questo è MOD_PHP o FastCGI o CGI PHP normale? Cosa succede se esegui lo script tramite la riga di comando?

Potresti anche provare a mettere Il registro degli errori di PHP E guardando lì dentro.


EDIT1: Provare:

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

E pubblica i risultati ...


EDIT2: Non sono davvero sicuro. La mia scommessa migliore è queste informazioni da il manuale PHP:

Il problema più comune con l'installazione di OCI8 non è impostare correttamente l'ambiente Oracle. Questo in genere appare come un problema usando OCI_Connect () o OCI_PConnect (). L'errore può essere un errore PHP come la chiamata alla funzione indefinita oci_connect (), un errore Oracle come ORA-12705 o persino un crash Apache. Controllare i file di registro Apache per gli errori di avvio e vedere le sezioni sopra per risolvere questo problema.

Qualcun altro ha qualche idea per aiutare Bryan?

Bryan,

Sarò onesto: ci ho provato due anni fa e fallito miseramente. :) Non sono riuscito a far funzionare le funzioni OCI per qualsiasi cosa compilando me stesso.

Ma nell'interesse di farlo, ho cercato una soluzione alternativa e l'ho trovata in Zend Core per Oracle. Tutto quello che ho fatto è stato scaricare, eseguire l'installatore ed è stato fatto. Installa Apache/PHP, MySQL (opzionale) e InstantClient per te.

Ora come server Zend, è fondamentalmente lo stesso prodotto. Mi rendo conto che questa potrebbe non essere la soluzione che speravi, ma se funziona ...

Zend Server

Ti stai connettendo al remoto o al DB locale? Penso che per localhost devi sostituire "host" con "false". Spero che questo ti aiuterà ...

EDIT: Penso che ti manchi un parametro ... I miei ultimi suggerimenti sono: 1. È necessario impostare la porta (impostazione predefinita 1521) e/o 2. È necessario inserire il nome DB e/o devi impostare il nome dell'istanza (il Parametro Oracle_sid)

Non controlli mai il valore di ritorno di OCI_Connect () o chiama OCI_ERROR () ma non sembra rilevante per il tuo problema poiché sembri soffrire di un crash PHP. C'è un bug aperto per Rhel che potrebbe influire anche a te:

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

Hai costruito tu stesso il pacchetto OCI8? Stai usando un binario di terze parti?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top