Start · Sprachen · PHP · Referenz · oci_internal_debug

oci_internal_debug

Funktion

Aktiviert oder deaktiviert die interne OCI8-Debug-Ausgabe für Oracle-Datenbankverbindungen.

seit PHP 5.0.0 Kategorie: db

Signatur

oci_internal_debug(bool $onoff): void

Beschreibung

oci_internal_debug() schaltet die interne Debug-Ausgabe der OCI8-Erweiterung ein oder aus. Wenn aktiviert, gibt PHP detaillierte interne Informationen über OCI8-Operationen aus, die bei der Fehlersuche in Oracle-Datenbankproblemen hilfreich sein können.

Die Funktion ist ausschließlich für Entwicklungs- und Diagnosezwecke gedacht. Die Debug-Ausgaben enthalten interne OCI8-Statusinformationen und werden direkt in die Standardausgabe geschrieben, was in Produktionsumgebungen unerwünscht ist und die Ausgabe der Anwendung stören kann.

Hinweis: Ab PHP 8.0 ist diese Funktion als veraltet markiert und wurde in PHP 8.0 entfernt. In neueren PHP-Versionen sollte stattdessen auf PHP-interne Fehlerbehandlungsmechanismen oder das OCI8-spezifische Attribut OCI_ATTR_SPOOL_TIMEOUT und verwandte Debugging-Optionen zurückgegriffen werden.

Für produktive Umgebungen empfiehlt sich die Verwendung von oci_error(), um Fehlerinformationen strukturiert abzurufen, anstatt die interne Debug-Ausgabe zu aktivieren.

Parameter

Name Typ Default Beschreibung
$onoff Pflicht bool Gibt an, ob die Debug-Ausgabe aktiviert (true) oder deaktiviert (false) werden soll.

Rückgabewert

Typ
void
Beschreibung
Die Funktion gibt keinen Wert zurück.

Beispiele

Interne Debug-Ausgabe aktivieren und eine Verbindung herstellen

<?php
// Debug-Ausgabe aktivieren (nur in Entwicklungsumgebungen!)
oci_internal_debug(true);

$conn = oci_connect('benutzer', 'passwort', '//localhost/ORCL');
if (!$conn) {
    $e = oci_error();
    echo 'Verbindungsfehler: ' . htmlspecialchars($e['message']);
    exit;
}

$stid = oci_parse($conn, 'SELECT SYSDATE FROM dual');
oci_execute($stid);

while ($row = oci_fetch_array($stid, OCI_ASSOC)) {
    echo 'Aktuelles Datum: ' . $row['SYSDATE'] . PHP_EOL;
}

oci_free_statement($stid);
oci_close($conn);

// Debug-Ausgabe wieder deaktivieren
oci_internal_debug(false);
// Interne OCI8-Debug-Informationen werden ausgegeben (implementierungsabhängig) Aktuelles Datum: 2024-05-15

Debug selektiv für problematische Abschnitte aktivieren

<?php
$conn = oci_connect('benutzer', 'passwort', '//localhost/ORCL');
if (!$conn) {
    $e = oci_error();
    trigger_error('OCI8-Verbindungsfehler: ' . $e['message'], E_USER_ERROR);
}

// Nur für diesen problematischen Abschnitt Debug aktivieren
oci_internal_debug(true);

$stid = oci_parse($conn, 'SELECT * FROM meine_tabelle WHERE id = :id');
oci_bind_by_name($stid, ':id', $id);
$id = 42;
oci_execute($stid);

oci_internal_debug(false);
// Ab hier keine Debug-Ausgaben mehr

while ($row = oci_fetch_array($stid, OCI_ASSOC + OCI_RETURN_NULLS)) {
    print_r($row);
}

oci_free_statement($stid);
oci_close($conn);
// OCI8-Debug-Ausgaben nur für den markierten Abschnitt Array ( [ID] => 42 [NAME] => Beispiel )

// Wichtig · Fallstricke

Deprecation und Entfernung: oci_internal_debug() wurde in PHP 8.0 als veraltet markiert und vollständig entfernt. Code, der diese Funktion nutzt, muss vor der Migration auf PHP 8.0+ angepasst werden.

Sicherheitshinweis: Die interne Debug-Ausgabe sollte niemals in Produktionsumgebungen aktiviert werden. Sie kann sensible Informationen über die Datenbankstruktur, SQL-Abfragen und interne Zustände preisgeben, die für Angreifer nützlich sein könnten.

Alternative: Für strukturiertes Fehler-Debugging in modernen PHP-Versionen empfiehlt sich oci_error() in Kombination mit einem zentralen Fehler-Logging-System. Für tiefer gehende OCI8-Diagnosen können auch Oracle-seitige Trace-Mechanismen verwendet werden.