2012-04-10 2 views
2

Unsere Seite funktionierte gut auf dem alten Server, aber wir haben es kürzlich auf einen neuen Server verschoben, und sofort sah alles auf der Website durcheinander (dh kann nicht finde die gesuchten Daten in den Ansichten).Fehlendes Modell in zurückgegebenen Ergebnissen von CakePHP 2.1 auf neuem Server

Bei der weiteren Untersuchung, was vorher wie folgt zurückgegeben wurde:

$articles[0]['Article']['title'] 

jetzt zurückkehrt:

$articles[0][0]['title'] 

Zuerst wurde uns gesagt, es war, dass PDO nicht installiert wurde (oder war beschädigt oder etwas), aber wir bauen Apache mit PDO immer wieder neu auf und es zeigt PDO für PHP und MySQL an.

Ich habe versucht zu suchen, aber entweder ich suche nach der falschen Sache, oder es gibt keine guten Infos da draußen. Irgendwelche Ideen, was könnte dies verursachen und/oder wie können wir es beheben?


Edit:

Es funktioniert auch auf diesem Server vor einem Update, das es auf 5,3 (nicht sicher, was die vorherige Version war) aktualisiert

Edit 2

Per Vorschlag, änderte ich die Datenquelle zu HpMysql Das macht es funktioniert. Es beantwortet jedoch meine Frage nicht, da ich es als eine temporäre Lösung sehe - ich möchte immer noch wissen, was das Problem ist und wie ich es beheben kann, ohne diese Problemumgehung verwenden zu müssen.

+0

Haben Sie versucht, alle Fehler anzuzeigen? (debug = 2, errorhandler zu ''level' => E_ALL')?Vielleicht können Sie über die Fehler und den SQL-Dump feststellen, wo das Durcheinander beginnt. – Costa

+0

Yep - Debug 2 - Keine anderen Fehler als falscher Index auf Arrays - Daten werden in Ordnung zurückgegeben (abgesehen von der falschen Formatierung), daher sind die Abfragen in Ordnung. – Dave

+0

Überprüfen Sie die '$ name' Var auf Ihren Modellen. Es wird möglicherweise aus irgendeinem Grund nicht automatisch gefüllt. (Dies ist ein PHP 4-Problem, also sollten Sie keine Probleme mit 5 haben, aber es ist einen Scheck wert. Vielleicht hatten Sie einen alten Modell-Cache von 4?) – jeremyharris

Antwort

1

Antwort von Originalposter (me).

Nach unserem Server Typ: „Es gibt zwei Möglichkeiten, PDO zu laden Das erste ist Easyapache mithilfe der PDO PHP-Erweiterung installieren Der zweite ist durch. Installation des PDO über PECL. Es scheint, dass die fraglichen Module unterschiedlich sind. "

Anscheinend hatte dieser Server PECL anstelle des normalen easyapache PDO. Als er das entfernte und es mit dem easyapache PDO neu startete/zurücksetzte, funktionierte alles großartig.

Also - klingt wie CakePHP erfordert das "normale" PDO.

Rätsel gelöst.

Wenn Sie PECL stattdessen haben, können Sie diese Abhilfe verwenden:

Erstellen Sie eine Datei "HpMysql.php" in Ihrem Datasource-Ordner und fügen Sie diesen Code/Klasse: https://github.com/lorenzo/HipHop/blob/master/Model/Datasource/Database/HpMysql.php

ändern database.php ' Datenquelle‘auf '


anderes Problem' HpMysql: (stellte sich heraus, die gleiche Antwort sein):

$this->Auth->login() creates correct query that returns 1 row, but fails IF check (server specific issue)

Verwandte Themen