Ich möchte meinen Webserver auf die neueste Ubuntu-Version upgraden und somit auch php5 auf php7 aufrüsten. Ich habe die Installation und Konfiguration einer VM mit lubuntu 16.04 abgeschlossen, um Dinge zu testen, um zu sehen, ob Code-Änderungen erforderlich sind, und um zu testen, ob es überhaupt funktioniert.oci8 (Oracle) Probleme nach der Migration zu php7
In der ersten Anwendung habe ich ein seltsames Problem mit Orakel (Oci8). Die Anwendung verwendet serverseitiges Paging und zeigt auch Dinge wie "Total Records" und "Total records (filtered)" an. Natürlich basieren diese "Metriken" auf einfachen Zählabfragen und sie funktionieren und zeigen das korrekte Ergebnis an. Die SELECT-Anweisung zum Abrufen der tatsächlichen Daten gibt jedoch 0 Treffer zurück. Besonders rätselhaft, weil es genau die gleiche Abfrage verwendet:
$sQueryInner = "SELECT id, ROW_NUMBER() OVER ($sOrderByClause) R
FROM my_table " . $sWhereClause;
$sQueryFinal = "SELECT id FROM
(" . $sQueryInner . ")
WHERE R BETWEEN :startIndex and :endIndex";
// Total data set length after applying where
$sQueryFilteredCount = "SELECT COUNT(*) as \"totalRowsCount\" FROM (" . $sQueryInner . ")";
Der einzige Unterschied ist die ROW_NUMBER()
Klausel, aber ich sehe nicht, wie das wirkt sich Dinge, die keine Ergebnisse zurückgegeben. Ich bekomme auch keine Fehlermeldungen oder PHP-Warnungen. oci_fetch_array
gibt sofort false
zurück, was bedeutet, dass keine weiteren Zeilen gefunden wurden.
while ($row = oci_fetch_array($statementFinal, OCI_ASSOC + OCI_RETURN_NULLS)) {//...
Ich wollte einen Weg finden, um oci8 selbst zu debuggen. Um zu sehen, die tatsächliche SQL gesendet. Aber oci_internal_debug
scheint seit php5.6 deaktiviert zu sein.
So bin ich ziemlich verloren. Irgendwelche Ideen, was könnte das verursachen und wie könnte ich weiter debuggen/suchen, warum es verursacht wird?
EDIT:
Wit wireshark kann ich sehen, tatsächlich die SQL an die DB gesendet und es ist richtig. Problem ist, dass keine Zeilen zurückgegeben werden. Die einzige Schlussfolgerung ist, dass die Parameterbindung nicht korrekt funktioniert und daher keine Ergebnisse zurückgegeben werden. Ich verstehe es aber nicht, da genau dasselbe auf ubuntu 14.04 funktioniert. Einziger Unterschied ist php7. Alle anderen Anwendungen funktionieren ebenfalls, sodass das Problem bei dieser spezifischen Abfrage auftritt. Es hat eine subselect und Row_number() -Funktion.