Hallo,
ich habe ein Live-Update durchgeführt von der Version 3.2.3 auf Version 3.2.7.
Seit dem Update tritt nun folgender Fehler auf:
"PHP Fatal error: Call to a member function row() on a non-object in .../contao/system/modules/news/classes/News.php on line 138"
Die Fehlermeldung tauchte auch schon bei github auf (https://github.com/contao/core/issues/4791), konnte da aber wohl nicht reproduziert werden und das Ticket wurde unverrichteter Dinge geschlossen.
Bei mir zeigt sich der Fehler nicht im Frontend auf der Website und auch nicht im Backend.
ABER:
Ich erzeuge mittels Cron-Job aus der Datenbank heraus eine JSON-Datei die ich verwende, um die in Contao erstellten News-Beiträge in eine Smartphone-App zu überführen. Das ging die ganze Zeit auch perfekt. Bis zu dem Update.
Als ich nach dem Update einen Newsbeitrag kopiert und die Kopie mit neuem Text etc. versehen hatte, tauchte der oben genannte Fehler das erste mal auf. Seit dem werden auch keine Bilder in die Newsbeiträge übernommen, die man im Kopf des Beitrags nach dem Bereich "Teasertext" mit "Ein Bild hinzufügen" einer Nachricht zuweisen kann. Außerdem wird nun jeder Beitrag, der ab jetzt eingestellt wird doppelt angezeigt.
In der Nachricht selbst, wohl gemerkt NICHT im Frontend auf der Website, sondern nur im Nachrichtenbeitrag in der Smartphone-App, wird dann folgende Fehlermeldung angezeigt, bevor der Artikel angezeigt wird:
You are not allowed to access the requested page!
Maybe you are not logged in correctly?
If a user tries to access a protected page without permission, a special error_403 page will be called. In this case you can either display an error message (like we are doing now) by simply creating an article on this page, or you can redirect the user to another page (e.g. the welcome page).
Accordingly, if a user tries to access a page that does not exist, a special error_404 page will be called. Again, you can either display an error message or redirect the user to another page.
Bei allen anderen Artikeln die vor dem Update erstellt wurden taucht diese Fehlermeldung nicht auf.
Aber auch bei diesen älteren Beiträgen fehlt jetzt das Bild dazu.
Was kann ich tun um diesen merkwürdigen Fehler zu beheben?
Vielen Dank im Voraus für eure Hilfestellungen.
Gruß,
pyretta
EDIT: Falls es was nützt, die JSON-Datei ist laut JSONLint valide. Aber die neuen Artikel sind hier doppelt drin. Einmal mit dem Fehlertext "You are not allowed to access the requested page! [..]" und einmal mit dem eigentlichen Artikel. Und es fehlt überall der Dateipfad für das Beitragsbild, der ist jedesmal "null".
Hier der PHP-Code mit der Datenbankabfrage und der Erzeugung des Inhalts der JSON-Datei:
PHP-Code:
///NEWS DATENBANK-ABFRAGEN
$beispielnews_array = array();
$beispielnews_select = "SELECT n.id,n.tstamp,n.headline,n.alias,n.date,n.time,n.subheadline,n.teaser,n.alt,f.path,u.name,c.text FROM tl_news n LEFT JOIN tl_files f ON f.id = n.singleSRC LEFT JOIN tl_user u ON u.id = n.author LEFT JOIN tl_content c ON c.pid = n.id WHERE n.pid = '4' AND n.published = '1' ORDER BY date DESC LIMIT 0, 10";
$beispielnews_query = mysql_query($beispielnews_select)or die("Anfrage fuer 'tl_news' war nicht erfolgreich. Error: ".mysql_error());
while($obj_ex_news = mysql_fetch_object($beispielnews_query)) {
$beispielnews_array[] = $obj_ex_news;
}
//ALLE ARRAYS IN MEHRDIMENSIONALES ARRAY ZUSAMMENFASSEN
$beispiel_arr = array("beispiel" => array("items" => $beispielnews_array));
//ARRAY ALS JSON FORMATIEREN
$json_inhalt = json_encode($beispiel_arr);
Das hat, wie gesagt, die ganze Zeit vor dem Update super funktioniert.
EDIT 2: Hier noch ein Auszug aus der JSON-Datei:
Code:
{
"beispiel": {
"items": [
{
"id": "30",
"tstamp": "1400494608",
"headline": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.",
"alias": "lorem-ipsum",
"date": "1400494500",
"time": "1400494500",
"subheadline": "",
"teaser": "<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>",
"alt": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.",
"path": null,
"name": "Max Mustermann",
"text": "You are not allowed to access the requested page!<br />\n<br />\nMaybe you are not logged in correctly?<br />\n<br />\nIf a user tries to access a protected page without permission, a special <strong>error_403</strong> page will be called. In this case you can either display an error message (like we are doing now) by simply creating an article on this page, or you can redirect the user to another page (e.g. the welcome page).<br />\n<br />\nAccordingly, if a user tries to access a page that does not exist, a special <strong>error_404</strong> page will be called. Again, you can either display an error message or redirect the user to another page.\n"
},
{
"id": "30",
"tstamp": "1400494608",
"headline": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.",
"alias": "lorem-ipsum",
"date": "1400494500",
"time": "1400494500",
"subheadline": "",
"teaser": "<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>",
"alt": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.",
"path": null,
"name": "Max Mustermann",
"text": "<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus.</p>"
}
]
}
}
Da sieht man, dass es sich um ein und den selben Artikel handeln soll, weil die gleiche ID, gleiche Titel, Teaser, Autor, Datum - nur der Text ist ein anderer.
Lesezeichen