Signatur
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
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);
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);
// 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.