Frage

UPDATE (21.05.2010) Erfolg!

Nach viel $ head-> cessch () 'ing habe ich es gelöst.

Denken Sie daran, Kinder, seien Sie vorsichtig mit der sofortigen Kundenversion, die Sie verwenden, abhängig von den Virtualisierungseinstellungen!

Ich hatte den generischen Instant-Client installiert (nicht wissen, dass unsere ESX-Server auf AMD-Prozessoren sitzen, nicht auf Intel), und das hat intern funktioniert (die CentOS-Installation war 32-Bit, da unsere internen ESXi-Server nicht 64-Bit sind). Nun und--, wenn Sie eine 32-Bit-Installation auf einem virtualisierten Server ausführen, der auf einem AMD64 sitzt, ist es immer noch wichtig, welcher sofortige Client Sie installieren.

Es war das Letzte, was ich überprüfte, aber wie es scheint, läuft jetzt alles gut.

Ich möchte mich bei allen bedanken, die mir geholfen haben, jeden möglichen Test durchzuführen, um dies herauszufinden, aber am Ende war es meine Schuld, die Unterschiede in den Virtualisierungen nicht zu erkennen.


Update (21.05.2010)Ich dachte, dieser Fehler wäre mir entkommen, als ich ihn intern auf einem neuen VM installierte, aber ich habe jetzt einen Verengungslink gefunden.

Ich habe versucht, dies auf unserem Produktionsserver zu installieren, als ich dies gepostet habe. Nach einer Woche ohne Fortschritt und in der Notwendigkeit, wieder zu entwickeln, habe ich einen VM auf unserem internen Server mit einer brandneuen Installation von Mist ... CentOS und frischen Installationen von Instant Client und OCI8 ausgestattet.

Arbeitete perfekt.

Wir haben jedoch gerade eine exakte Kopie der VM auf unsere Produktionsserver hochgeladen und es funktioniert auf magische Weise nicht mehr. Versuchte alles wieder zu installieren, ohne Erfolg.

Das einzige Dinge, auf das ich es eingrenzen könnte, ist ein Firewall -Problem (obwohl ich das gleiche Problem beim Versuch von 127.0.0.1) oder möglicherweise ein ESX -Server (unsere Produktionsserver) -Serverprobleme ausführen. Interne Server werden ESXI ausgeführt.

Irgendwelche Gedanken?

Update (08.03.2010) Ich habe XDebug installiert und habe es meinen Code verfolgt. Dies ist die Ausgabe, die ich bekomme:

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

Die Spur hält an diesem Punkt an.

Ich habe alles auf einem lokalen Server auf die gleiche Weise installiert und es funktioniert einwandfrei. Zu sagen, dass ich einen vollständigen Verlust habe, würde es leicht ausdrücken.


*HINWEIS: Ich lief make -Test und es wurde bei jedem Test fehlgeschlagen. Ich habe dies nie auf meiner Arbeitsmaschine geleitet, um festzustellen, ob es die gleichen Fehler meldet. Irgendeine Idee, warum der Test melden würde, würde melden, aber keinen Fehler melden?

Ich habe den Oracle InstantClient ohne gemeldete Fehler zusammen mit dem OCI8 -PECL -Paket und einem Verlust installiert. Immer wenn ich versuche, eine Verbindung mit oci_connect zu öffnen, hält es mein gesamtes PHP -Skript an.

BEISPIEL:

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

Gibt eine vollständige leere Seite zurück. Das Modul ist geladen (in phpinfo zu sehen) und alles, was ohne Fehler installiert ist.

Ich bin vollem Verlust.

CentOs: 5.4

Apache: 2.2.3

PHP: 5.3.1

InstantClient: 11.2

OCI8: 1.4.1

Irgendwelche Gedanken?

ANMERKUNGEN

Apache -Fehlerprotokoll berichtet nichts

Versuchs Debugging:

1:

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

Kehrt zurück:

beforeafter

2:

Host auf // Host wechseln

Kehrt zurück:

Gleicher Fehler

War es hilfreich?

Lösung 5

Es wurde behoben. Weitere Informationen finden Sie in der Oberseite, aber hier sind die Cliff Notes: Virtualiztion -Umgebungen von Bedeutung.

Andere Tipps

Gibt es etwas in Apache's error_log? Ist das mod_php oder fastCGI oder normaler CGI -PHP? Was passiert, wenn Sie das Skript über die Befehlszeile ausführen?

Sie können auch versuchen, einzustellen Fehlerprotokoll von PHP und dort hineinschauen.


Edit1: Versuchen:

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

Und poste die Ergebnisse ...


Edit2: Ich bin mir wirklich nicht sicher. Meine beste Wette ist diese Info von Das PHP -Handbuch:

Das häufigste Problem bei der Installation von OCI8 ist, dass die Oracle -Umgebung nicht korrekt eingestellt ist. Dies erscheint typischerweise als Problem unter Verwendung von OCI_Connect () oder OCI_PConnect (). Der Fehler kann ein PHP-Fehler sein, z. B. Aufruf zur undefinierten Funktion oci_connect (), ein Orakelfehler wie ORA-12705 oder sogar ein Apache-Absturz. Überprüfen Sie die Apache -Protokolldateien auf Startfehler und finden Sie in den obigen Abschnitten, um dieses Problem zu beheben.

Hat noch jemand Ideen, um Bryan zu helfen?

Bryan,

Ich werde ehrlich sein: Ich habe es vor zwei Jahren versucht und habe kläglich gescheitert. :) Ich konnte die OCI -Funktionen nicht dazu bringen, für irgendetwas zu arbeiten, indem ich mich zusammenstellte.

Aber im Interesse, es zu erledigen, suchte ich nach einer alternativen Lösung und fand sie in Zend Core für Oracle. Ich habe nur heruntergeladen, das Installateur ausgeführt und es war fertig. Es installiert Apache/PHP, MySQL (optional) und den Instantclient für Sie.

Jetzt als Zend Server ist es im Grunde dasselbe Produkt. Mir ist klar, dass dies möglicherweise nicht die Lösung ist, auf die Sie sich erhofft haben, aber wenn es funktioniert ...

Zend Server

Stellen Sie eine Verbindung zur Fernbedienung oder mit der lokalen DB her? Ich denke, für Localhost müssen Sie "Host" durch "false" ersetzen. Ich hoffe, dies wird dir helfen...

Bearbeiten: Ich denke, Sie fehlen einen Parameter ... Meine letzten Vorschläge sind: 1. Sie müssen den Port (Standard 1521) und/oder 2. Sie müssen den DB -Namen eingeben und/oder müssen Sie den Instanznamen (die Oracle_sid Parameter)

Sie überprüfen niemals den Rückgabewert von oci_connect () oder rufen oci_error () auf, aber es sieht für Ihr Problem nicht relevant aus, da Sie anscheinend an einem PHP -Absturz leiden. Es gibt einen offenen Fehler für Rhel, der Sie auch betreffen kann:

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

Haben Sie das OCI8 -Paket selbst erstellt? Verwenden Sie eine Binärdatei von Drittanbietern?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top