Fehlermeldung nach PHP-Update
Eingetragen von Sandy (11)
am 27.10.2022 - 12:13 Uhr in
am 27.10.2022 - 12:13 Uhr in
Der Webserver bei meinem Provider wurde von PHP 7.4 auf PHP 8.0 upgedatet.
Wenn ich jetzt einen Eintrag bei
node/add/article
machen möchte kommt folgende Meldung:
Error: Call to undefined function each() in SMTP->Data() (Zeile 393 von .../sites/all/modules/smtp/smtp.transport.inc).
Weiß jemand wie man das (unter Drupal 7.92) noch irgendwie hinbekommen kann?
Gruß, Sandy
- Anmelden oder Registrieren um Kommentare zu schreiben
Es scheint einen Patch dafür
am 27.10.2022 - 15:32 Uhr
Es scheint einen Patch dafür zu geben. Siehe https://www.drupal.org/project/smtp/issues/3298859
Wenn das nicht funktioniert, kannst du each() auch selbst im Code durch key() oder current() ersetzen, da die D7 Version nicht mehr unterstützt wird.
Datei ändern?
am 29.10.2022 - 10:56 Uhr
Hallo glycid, zunächst herzlichen Dank für Deine Antwort!
Es scheint einen Patch dafür zu geben.
Wie ein Patch zu verwenden wäre weiß ich leider nicht. Die Änderungen wegen PHP 8 scheinen bezüglich dieses Moduls aber auch alle für Drupal 8/9 gemacht worden zu sein (und nicht mehr für Drupal 7).
Du kannst each() auch selbst im Code durch key() oder current() ersetzen ...
In der Datei (smtp.transport.inc, siehe Fehlermeldung) gibt es zwei Stellen an denen "each" vorkommt.
Zeile 393
while (list(, $line) = @each($lines)) {
Zeile 423
while (list(, $line_out) = @each($lines_out)) {
Ich vermute nicht, dass ich die Wörter each einfach durch key oder current ersetzen soll?
Obwohl ich das noch hinbekäme. ;-)
Viele Grüße, Sandy
Sieh Dir den Patch
am 29.10.2022 - 16:52 Uhr
Sieh Dir den Patch https://www.drupal.org/files/issues/2018-08-03/remove_usage_of_each-2946667-2.patch an. Hier der erste Abschnitt:
diff --git a/smtp.phpmailer.inc b/smtp.phpmailer.inc
index 95420d2..d9e4a7a 100644
--- a/smtp.phpmailer.inc
+++ b/smtp.phpmailer.inc
@@ -1634,7 +1634,7 @@ class PHPMailer {
$eol = "\r\n";
$escape = '=';
$output = '';
- while ( list(, $line) = each($lines) ) {
+ foreach ($lines as $line) {
$linlen = strlen($line);
$newline = '';
for ($i = 0; $i < $linlen; $i++) {
Oben steht die Stelle um die es sich handelt in smtp.phpmailer.inc werden die Zeilen ab 1634 gezeigt. Die Zeile mit dem - davor wird durch die Zeile mit dem + davor ersetzt (das Plus darf anschließend nicht da stehen !!).
Entsprechend arbeitest Du Dich durch den Rest des Patches. Sollte auch für Nicht-Programmierer lösbar sein.
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *