Zum Inhalt springen

Anfängerfrage zu Variable "TYPO3_db" im PHP-Code einer Erweiterung

Erstellt am 12. Mai 2011 · 4 Antworten · letzte Antwort am 16. Mai 2011

Tags: Datenbank, Frage

lukesn ·

Guten Abend,

ich arbeite mich gerade in TYPO3 ein, wurde aber mit einem Problem an einer bestehenden Installation direkt ins kalte Wasser geworfen. Deswegen wende ich mich, in der Hoffnung auf Hilfe, an euch.

Das Problem: Es wurde eine Extension geschrieben mit der man Veranstaltung eintragen und verwalten kann. Diese können dann in drei Ansichten ausgegeben werden: die einzelne Veranstaltung, die komplette Liste sowie eine Ansicht der kommenden fünf Events.
Letztere Ansicht funktionierte plötzlich nicht mehr, obwohl kein Admin am Projekt war und die Redakteure nichts falsch einstellen können.

In der zugehörigen PHP-Datei habe ich mir die Datenbankabfrage angeschaut, ausgeben lassen und im phpMyAdmin testweise aufgerufen - funktioniert wunderbar. Wenn das Script allerdings die Datensätze ausgeben soll kommt kein Ergebnis.

Dann habe ich folgende Änderung vorgenommen:

$res = mysql_query(TYPO3_db,$query);

wurde geändert in:

$res = mysql_query($query);

Nun läuft das Script wieder wie gewünscht, allerdings habe ich das Gefühl, dass die Lösung nicht die eleganteste ist und die Ursache des Problems habe ich auch nicht erkannt. Vor ein paar Wochen ist die Datenbank umgezogen, allerdings ist das Problem erst vor ein paar Tagen aufgetreten. Daran kann es also, denke ich, nicht liegen.

Hat jemand einen Ansatz für mich?

Danke und Gruß,
Lukas

lukesn ·

Folgende Informationen habe ich heute erhalten:

"... ist das Update von PHP 5.2 auf Version 5.3. In dieser Version wird ein neuer Fehlertyp E_DEPRECATED eingeführt, welcher bei Aufruf "veralteter" Funktionen zum Tragen kommt. [...] Es ist davon auszugehen, dass ein aktuelles Typo3 ( > Version 4.3.1) die als deprecated markierten Funktionen nicht mehr nutzen und
durch "saubere" Äquivalente ersetzt wird."

Die aktuelle Version ist TYPO3 4.3.1
Mir steht also ein Update bevor, sehe ich das richtig?

vince ·

Hallo,

Durch das Typo3 Update (bzw. das PHP update) werden als "deprecated" markierte Funktionen nicht mehr funktionieren. Folglich müssen dann in der Extension alle "alten" PHP Aufrufe angepasst werden.
Kann's sein, dass diese Extension vor etwas längerer Zeit entwickelt wurde?

Mein Tip:
Du könntest dir nach dem Upate die ganzen Fehlermeldungen mal anzeigen lassen (in der localconf.php die displayErrors auf 1 setzen).
Dann sieht man, bei welchen PHP-Aufrufen Warnings bzw. Fehlermeldungen erscheinen.

Gruß,
Vince.

aemka ·

Das dürfte eigentlich nichts mit php 5.3 zu tun haben, mysql_query() ist ja nicht deprecated. Datenbankzugriffe in typo3 extensions sollten aber überhaupt nicht nativ über mysql_query() laufen. Dafür benutzt man die TYPO3-API:
http://typo3.org/fileadmin/typo3api-4.0.0/df/d70/classDB.html
http://www.pi-phi.de/database-api.html

TYPO3 würde ich aber generell auch mal updaten. 4.3.1 ist mehr als veraltet und hat eine Menge bekannter Sicherheitslücken. Evtl. ist es sogar gar nicht ganz kompatibel zu php 5.3.