MyBB.de Forum

Normale Version: Tasks werden seit einigen Tagen nicht ausgeführt
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Die nachstehende PHP-Fehlermeldung habe ich nur in einem Forum mit: PHP: 8.0.17 | SQL: 8.0.22
Code:
Trying to access array offset on value of type null in /home/www/url/inc/functions_task.php on line 115
Der Abschnitt:
PHP-Code:
function add_task_log($task$message)
{
global 
$db;

if(!
$task['logging'])
{
return;
}

$log_entry = array(
"tid" => (int)$task['tid'],
"dateline" => TIME_NOW,
"data" => $db->escape_string($message)
);
$db->insert_query("tasklog"$log_entry);

Die beanstandete Zeile (115) lautet:
PHP-Code:
if(!$task['logging']) 

Auch werden seit einigen Tagen keine Task mehr automatisch (Cronjob) ausgeführt.
  • Im Footer ist das {$task_image} auskommentiert.
Selbst deaktivieren/aktivieren der Tasks (Datum/Uhrzeit wird akualisiert) lässt maximal die manuelle Ausführung zu.

Cornjob deaktiviert und
  • Im Footer das {$task_image} nicht auskommentiert.
Selbst deaktivieren/aktivieren der Tasks (Datum/Uhrzeit wird akualisiert) lässt maximal die manuelle Ausführung zu.

In der Tabelle mybb_tasks ist
  • enabled = 1
  • logging = 1
  • locked = 0
Ist dass der PHP- bzw. SQL-Version geschuldet? Abhilfe?
Oder muss ich die Ursache woanders suchen? Wo?

Danke vorab für Tipps und Hinweise.

Anmerkung:
in einem anderen Forum mit PHP: 7.4.28 | SQL: 5.7.37 funktioniert die Taskausführung (Aufruf durch einen Cronjob) fehlerfrei.
Wie sieht denn deine Task-Datei aus?

Ich könnte mir vorstellen, dass der Fehler entsteht, weil du im Task keine Logging-Funktion hast.
Nach meinem Verständnis ist es so, dass in irgendeiner Task-Datei der Array-Key bzw. Array-Index "logging" nicht existiert.
Das ist aber nur ne erste Vermutung. Wink
Danke für deine Gedankengänge. Deine Vermutung kann meines Wissens nach nicht zutreffend sein.

Warum sollte die Definition logging gegeben sein? In allen Tasks von MyBB (V1.8.30) ist auch keine array bzgl. logging gegeben.

Die Funktionsangaben (siehe Dein Beitrag hier) sind hilfreich, wenn z.B. bei Aktivierung/Installation eines PlugIns ein Task automatisch mit installiert und eventuell gleich aktiviert werden soll. Dem MyBB-System wird daher vorab mitgeteilt wann, wie, welche Task-Datei der neue Task ausgeführt soll.

Legt man einen Task manuell an, definiert man alle für die Taskausführung gewünschten Angaben individuell selbst, welche gleichfalls in der Datenbank abgelegt werden. Die eigentliche aufgerufene Task-Datei enthält letztlich nur was der Task auszuführen hat.

Lasse mich gerne berichtigen wenn ich vorstehende Thematik inkorrekt interpretiert haben sollte.

Da es in anderen Foren (auch über Cronjob) fehlerfrei funktioniert, ist meine laienhafte Vermutung, das es mit den PHP-/SQL_Versionen zusammenhängen könnte.
(13.05.2022, 18:03)Schnapsnase schrieb: [ -> ]Ich könnte mir vorstellen, dass der Fehler entsteht, weil du im Task keine Logging-Funktion hast.
Nach meinem Verständnis ist es so, dass in irgendeiner Task-Datei der Array-Key bzw. Array-Index "logging" nicht existiert.
Das geht schon in die richtige Richtung, ist aber nicht ganz richtig. add_task_log($task, $message) erwartet als erstes Argument den $task. Offenbar wir diese Funktion an irgendeiner Stelle falsch verwendet, wo genau lässt sich anhand dieser Fehlermeldung nicht feststellen.
(14.05.2022, 09:48)Gerti schrieb: [ -> ]Da es in anderen Foren (auch über Cronjob) fehlerfrei funktioniert, ist meie Vermutung, das es mit den PHP-/SQL_Versionen zusammenhängt.
Bei PHP 8.0 gab es jede Menge (nicht abwärtskompatible) Änderungen und manche Fehler im Code werden nicht mehr toleriert: https://www.php.net/manual/de/migration80.php
(14.05.2022, 10:02)StefanT schrieb: [ -> ]Das geht schon in die richtige Richtung, ist aber nicht ganz richtig. add_task_log($task, $message) erwartet als erstes Argument den $task.

Danke!

Auch aus diesem Grund wäre es wohl hilfreich gewesen, die Task-Datei mal zu sehen, aber naja...  Wink
(14.05.2022, 10:14)Schnapsnase schrieb: [ -> ]Auch aus diesem Grund wäre es wohl hilfreich gewesen, die Task-Datei mal zu sehen, aber naja...  Wink
Falsche Ironie?
Es wurde nicht darum gebeten den/die Inhalte der Task-Datei(en) hier zu posten

Ich habe aktuell, wegen der Nichtausführung der Tasks, nur drei Standard-Tasks von MyBB aktiv.
* Daily Cleanup
* Thread Views
* Version Check
die Tasks werden nicht ausgeführt. Die zu posten ist nicht zielführend, da diese Tasks jeder MyBB-Anwender selbst hat.
(14.05.2022, 10:47)Gerti schrieb: [ -> ]Falsche Ironie?
Es wurde nicht darum gebeten den/die Inhalte der Task-Datei(en) hier zu posten

Man (du) lese bitte in diesem Post den ersten Satz.
Es war auch nie die Rede davon, dass gar keine Tasks mehr ausgeführt werden, zumindest hatte ich das so nicht verstanden. Wink
Eine fehlerhafte oder nicht vorhandene Task-Datei kann durchaus den ganzen Rest stoppen.
Das dürfte allerdings nach Deaktivierung nicht mehr der Fall sein.
Tritt das Problem auch in einem standardmäßigen Forum ohne Plugins, Modifikationen und eigenes Theme auf?
Fehler behoben, die Tasks funktionieren wieder!

Ursache:
Die Berechtigungender der Pfade im Account waren bei Webgo wie folgt eingestellt:
[.]    CHMOD 777
[..]  CHMOD 755

Lösung:
Nachdem gestern Abend die Berechtigungen des Pfad vom Webspacebetreiber (testweise) gleichfalls auf
[..]  CHMOD 777
umgestellt wurde (klappte nur über eine gesonderte SSH-Verbindung ...warum auch immer) wurden die Tasks sofortwieder zeitgerecht ausgeführt.

Shy Auf so eine Fehlerquelle muss man erst mal kommen. Die Testeinstellungen bleiben jetzt als IST-.Bestand bestehen.

Wer die Accounteinstellungen vorher wann geändert hat (die Tasks haben ja urprünglich funktioniert) entzieht sich meiner Kenntnis. Wie üblich will niemand etwas geändert haben.

Vllt. hilft dieser Lösungsweg anderen Usern, sollten sie mal dieselben Probleme haben. Die Fehlermeldungen einzelner PlugIn-Tasks (wegen SQL8.0.x) poste ich in gesonderten Beiträgen.

An dieser Stelle besten Dank an Euch beide für die Tipps und Hinweise, welche dazu animierten nach dem sogenannten "Unmöglichen" zu suchen.