Zum Inhalt springen Zur Seitenleiste springen

Dieses Thema ist gelöst. Hier finden Sie eine Beschreibung des Problems und der Lösung.

Problem:
Wenn du PHP-Warnungen in den Error Logs siehst, die auf undefinierte Array-Schlüssel in bestimmten Zeilen der Datei 'class-wpml-media-attachment-by-url-query.php' des WPML Media Translation Plugins hinweisen, könnte dies auf Probleme mit ungültigen URLs in deiner Mediathek zurückzuführen sein.
Solution:
Wir empfehlen, die URLs der Medien in deiner Website zu überprüfen. Hierfür haben wir ein Snippet in der 'functions.php'-Datei des Child Themes hinzugefügt, das die Medien nach ungültigen URLs durchsucht. Du kannst das Ergebnis dieser Überprüfung im Menü 'Media URL Check' einsehen. Sollte das Problem weiterhin bestehen, erlaube uns bitte weiterhin Zugriff auf deine Website, damit wir die Untersuchung fortsetzen können. Falls wir die Ursache nicht identifizieren können, werden wir den Second-Tier-Support hinzuziehen.

Bitte beachte, dass diese Lösung möglicherweise veraltet oder nicht auf dein spezifisches Problem anwendbar ist. Wir empfehlen dir, die bekannten Probleme zu überprüfen, die Version der dauerhaften Lösung zu verifizieren und sicherzustellen, dass du die neuesten Versionen von Themes und Plugins installiert hast. Sollte das Problem weiterhin bestehen, zögere nicht, ein neues Support-Ticket zu eröffnen.

Dies ist das technische Support-Forum für WPML – das mehrsprachige WordPress-Plugin.

Mitlesen können alle, doch nur WPML-Kunden können hier Fragen veröffentlichen. Das WPML-Team antwortet im Forum an 6 Tagen pro Woche, 22 Stunden am Tag.

Schlagwörter: 

Dieses Thema enthält 11 Antworten, hat 0 Stimmen.

Zuletzt aktualisiert von Andreas W. Vor 2 Monaten, 1 Woche.

Assistiert von: Andreas W..

Autor Beiträge
Juni 13, 2025 um 8:43 am #17132161

cons-2

Hintergrund des Themas:
Wir haben in den PHP Error Logs immer wieder Warnungen von WPML und freuen uns, wenn es weniger wird.

Wir nutzen WPML mit ATE (deepL) und übersetzen alles automatisch.
Die Warnungen scheinen gehäuft aufzutreten, möglicherweise wenn ein Redakteur etwas Neues speichert und damit zu ATE einreicht. Wir haben es nicht im Detail geprüft.

Die Symptome:
Zeile 163:
PHP Warning: Undefined array key 1 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 163
PHP Warning: Undefined array key 4 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 163
PHP Warning: Undefined array key 5 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 163
PHP Warning: Undefined array key 7 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 163

Zeile 99:
PHP Warning: Undefined array key 0 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 99
PHP Warning: Undefined array key 1 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 99
PHP Warning: Undefined array key 2 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 99
PHP Warning: Undefined array key 3 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 99

Die Fehelr treten z.T. zusammen auf (undefined key 1,2,3) oder auch mal nur einzeln (nur array key 1 undefined)

Fragen:
Bitte einmal das WPML-Plugin von den Entwicklern prüfen lassen und ggf. verbessern.

Juni 13, 2025 um 10:20 pm #17134825

Andreas W.
WPML-Unterstützer seit 12/2018

Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch )

Zeitzone: America/Lima (GMT-05:00)

Hallo,

Bevor wir etwas an die Entwickler weiterleiten können, müsse wir ein Problem zuerst replizieren können und ich bin mir sehr sicher, dass man das nicht ohen weitere auf einer neuen Test Site replizieren kann.

Der Fehler bezieht sich hier auf das WPML Media Translation Plugin.

Es ist möglich, dass dieser Fehler im Zusammenhang mit einem anderen Plugin oder dem verwendeten Theme oder gar Korrupten Einträgen in der Datenbank steht.

Wir müssten zudem wissen, wann genau dieser Fehler auftritt. Ich vermute er sollte aktuell dann auftreten, wenn man versucht unter WPML > Media Translation eine Übersetzung anzulegen oder eine alternative Mediendatei in einer Zweitsprache hochzuladen.

Ich möchte einen temporären Zugriff (wp-admin und FTP) auf die Website anfordern, um das Problem genauer zu untersuchen.

Die dafür erforderlichen Felder findst Du unterhalb des Kommentarbereichs, wenn Du dich anmelden, um die nächste Antwort zu hinterlassen. Die Informationen, die Du angibst sind privat, was bedeutet, dass nur Du und ich sie sehen und darauf zugreifen können.

WICHTIG
Lege bitte unbedingt eine Sicherungskopie der Website und der Datenbank an, bevor Du uns den Zugriff gewährst.
Wenn Du die Felder "wp-admin / FTP" nicht sehen kannst, werden Ihre Anmeldedaten für Post und Website als "PUBLIC" (Öffentlich) festgelegt. Veröffentliche die Daten NICHT, es sei denn, Du siehst die erforderlichen wp-admin / FTP-Felder.

Ich muss hier ein Plugin namens "All In One WP Migration" installieren, um eine Kopie der Website anzulegen, auf welche ich das Problem genauer untersuchen kann.

Ich wäre allerdings auch sehr dankbar, wenn Du zu diesem Zweck selbst eine Staging Site, bzw. Kopie der Website von Deinem Server aus bereitstellen könntest.

Bei Fragen zum Erstellen einer solchen Staging Site kannst Du deinen Hosting Anbieter konsultieren. Achte bitte darauf, dass WPML auf diesem Staging ebenso unter https://wpml.org/de/account/websites/ registriert sein muss.

Solltest Du dazu nicht in der Lage sein eine solche Kopie der Website zum Testen bereitzustellen, dann lass es mich bitte auf diesem Ticket wissen.

Das private Antwortformular sieht folgendermaßen aus:
versteckter Link

Klicke beim nächsten Antworten auf "I still need assistance".

Video:
versteckter Link

Beachte bitte, dass wir verpflichtet sind, diese Informationen auf jedem Ticket individuell anzufordern. Wir dürfen nicht auf Zugangsinformationen zugreifen, die nicht speziell auf diesem Ticket im privaten Antwortformular übermittelt wurden.

Mit freundlichen Grüßen
Andreas

Juni 17, 2025 um 3:34 pm #17143188

Andreas W.
WPML-Unterstützer seit 12/2018

Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch )

Zeitzone: America/Lima (GMT-05:00)

In der wp-config.php steht WP DEBUG auf:

define('WP_DEBUG', 'false' === 'true');

Ich habe leider keine Erlaubnis diese Datei zu editieren.

Bitte stelle den Eintrag auf:

define('WP_DEBUG', true);

Hinterlasse mit danach einen Kommentar auf diesem Ticket.

Juni 18, 2025 um 12:47 pm #17146487

cons-2

Danke für die Rückmeldung.
Ist erledigt. Du findest die DEBUG-Log-Datei unter /wp-content/debug.log.

Da werden wahrscheinlich sehr viele unnötige Kleinigkeiten drin stehen.
Hoffe, dass es dir dennoch hilft.

Juni 18, 2025 um 9:46 pm #17148340

Andreas W.
WPML-Unterstützer seit 12/2018

Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch )

Zeitzone: America/Lima (GMT-05:00)

Vielen Dank, allerdings existiert die berichtete Warnung im aktuellen debug.log nicht und ich finde auch sonst keine Einträge, die auf eine Fehler in WPML hindeuten.

Das ist auch dann nicht der Fall, wenn ich eine Testseite anlege und übersetze.

Kannst Du die Warnung auf dem Staging replizieren?

Juni 19, 2025 um 12:29 pm #17150614

cons-2

Hallo Andreas,

ja, ich kann den Fehler auch auf der Testseite reproduzieren.
Beliebig oft.

1. Startseite ansehen
2. oben in der admin bar auf "Seite bearbeiten" klicken
3. in Gutenberg direkt ganz oben einen Bild-Block von WordPress einfügen
4. Ein Foto aus der Mediathek auswählen, das noch nicht auf der Startseite verwendet wird
5. Oben rechts die Änderungen speichern
6. Log-Datei ansehen, viele neue Einträge (https://cdn.wpml.org/wordpress/wp-content/debug.log)

Eben probiert:
[19-Jun-2025 12:22:36 UTC] PHP Warning: Undefined array key 0 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 99
[19-Jun-2025 12:22:36 UTC] PHP Warning: Undefined array key 1 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 99
[19-Jun-2025 12:22:36 UTC] PHP Warning: Undefined array key 2 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 99
[19-Jun-2025 12:22:36 UTC] PHP Warning: Undefined array key 0 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 163
[19-Jun-2025 12:22:36 UTC] PHP Warning: Undefined array key 1 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 163
[19-Jun-2025 12:22:36 UTC] PHP Warning: Undefined array key 2 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 163
[19-Jun-2025 12:22:36 UTC] PHP Warning: Undefined array key 4 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 163
[19-Jun-2025 12:22:36 UTC] PHP Warning: Undefined array key 5 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 163
[19-Jun-2025 12:22:36 UTC] PHP Warning: Undefined array key 0 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 99
[19-Jun-2025 12:22:36 UTC] PHP Warning: Undefined array key 1 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 99
[19-Jun-2025 12:22:36 UTC] PHP Warning: Undefined array key 0 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 163
[19-Jun-2025 12:22:36 UTC] PHP Warning: Undefined array key 1 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 163
[19-Jun-2025 12:22:36 UTC] PHP Warning: Undefined array key 2 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 163
[19-Jun-2025 12:22:36 UTC] PHP Warning: Undefined array key 3 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 163
[19-Jun-2025 12:22:36 UTC] PHP Warning: Undefined array key 4 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 163
[19-Jun-2025 12:22:36 UTC] PHP Warning: Undefined array key 0 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 99
[19-Jun-2025 12:22:36 UTC] PHP Warning: Undefined array key 1 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 99
[19-Jun-2025 12:22:36 UTC] PHP Warning: Undefined array key 0 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 163
[19-Jun-2025 12:22:36 UTC] PHP Warning: Undefined array key 1 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 163
[19-Jun-2025 12:22:36 UTC] PHP Warning: Undefined array key 2 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 163
[19-Jun-2025 12:22:36 UTC] PHP Warning: Undefined array key 3 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 163
[19-Jun-2025 12:22:36 UTC] PHP Warning: Undefined array key 4 in /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 163

Juni 20, 2025 um 6:57 am #17152856

Andreas W.
WPML-Unterstützer seit 12/2018

Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch )

Zeitzone: America/Lima (GMT-05:00)

Der Fehler bleibt bestehen, wenn ich die Website mit dem Twenty Twenty-Five Theme und alleine WPML, unseren Addons und WPRocket teste. WPRocket lässt sich hier leider nicht deaktivieren und auf dem Raidboxes Server laufen im Hintergrund zudem einige Plugins unter /wp-content/mu-plugins.

Der Fehler tritt anscheinend auf, sobald die Homepage gespeichert wird. Ein neues Bild muss dazu nicht zwingend eingefügt werden.

Zudem fällt mir auf, dass der Fehler tritt auch dann auf, wenn ich unter WPML > Media Translation eine Übersetzung editiere und danach den Dialog zum Synchronisieren der Medien durchführe.

Ich habe die Homepage dupliziert, nach und nach Inhalt entfernt und gespeichert.

Der Fehler tritt sogar dann auf der duplizierten Homepage auf, nachdem der komplette Inhalt entfernt wurde.

Lege ich allerdings eine komplett neue Seite an, kann der Fehler nicht repliziert werden.

Die Ursache ist aktuell unklar und ich benötige etwas mehr Zeit, um die Ursache herauszufinden.

Juni 20, 2025 um 1:24 pm #17154468

cons-2

Hallo Andreas,

danke für die Info.

Dass es auch bei einer leeren Seite passiert, ist uns noch nicht aufgefallen.
Interessant.

Bin gespannt, wie es weitergeht und wünsche dir viel erfolg bei der Fehlersuche.
Halte uns gerne auf dem Laufenden.
Dir einen guten Start ins Wochenende.

Juni 21, 2025 um 8:57 pm #17156433

Andreas W.
WPML-Unterstützer seit 12/2018

Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch )

Zeitzone: America/Lima (GMT-05:00)

Auf deinem Staging sehe ich Fehler, wenn ich alleine mit WPML teste. Das ist auch dann der Fall, wenn ich WPML lösche und komplett neu installiere.

Auf meiner lokalen Kopie der Website tritt der Fehler nicht auf.

Dies bedeutet, dass dieser Fehler sehr wahrscheinlich durch die integrierten Plugins von Raidboxes entsteht, welche auf dem Staging im Hintergrund laufen.

Ich würde dazu raten, dass Du den Raidboxes Support kontaktierst und diesen darum bittest einen Blick in das error.log des Servers zu werfen. Erkläre dort bitte, dass ein Fehler in WPML ausgelöst wird, der sich auf einer lokalen Test Site nicht bestätigen lässt. Der Grund könnten die verwendeten mu-plugins von Raidboxes sein.

Juni 23, 2025 um 12:06 pm #17160086

cons-2

Hallo Andreas,

habe mir nun den WPML-Code an den beiden Stellen angeschaut, bevor wir raidboxes nun auch noch mit reinziehen.
- /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 99
- /wp-content/plugins/wpml-media-translation/classes/class-wpml-media-attachment-by-url-query.php on line 163

Der Fehler in Zeile 163 ist folgender:
In public function prefetchAllIdsFromMetas wird auf array keys zurückgreifen, die es nicht gibt.

Habe dazu einfach mal ein array in die logs geprinted zum debuggen.

Dabei ist mir aufgefallen, dass es zwei verschiedene Strukturen gibt, die dieses array, auf das im for-loop zugegriffen wird, haben kann.
1. [val1,val2,val3]
2. ['9' => val1, '16' => val2, '2' => val3]

Wenn das array in der zweiten Form vorliegt, dann kommt es zu dem Fehler, weil WPML im for loop numerische keys von 0 bis n annimmt. Die keys in Form 2 sind jedoch weder geordnet noch numerisch.
Das haut dann nicht hin.

Hier einmal euer code:

// We should put not found values into the cache too, otherwise they will be still queried later.
$pathes_count = count( $pathes );
error_log(json_encode(['wpml_debug_url_query'=>'','$pathes'=>$pathes]));
for ( $i = 0; $i < $pathes_count; $i++ ) {
	$index = md5( $language . $pathes[ $i ] );
	$this->setItemToCache( null, 'id_from_meta_cache', $index );
}

Hier eine verbesserte Version, die keine Fehler erzeugt:

// We should put not found values into the cache too, otherwise they will be still queried later.
$pathes_count = count( $pathes );
$path_values = array_values( $pathes );
error_log(json_encode(['wpml_debug_url_query'=>'','$pathes'=>$pathes, '$path_values'=>$path_values]));
for ( $i = 0; $i < $pathes_count; $i++ ) {
	$index = md5( $language . $path_values[ $i ] );
	$this->setItemToCache( null, 'id_from_meta_cache', $index );
}

Der gleiche Fehler ist auch in dem for-loop in Zeile 99, Funktion prefetchAllIdsFromGuids:

// We should put not found values into the cache too, otherwise they will be still queried later.
$urls_count = count( $urls );
for ( $i = 0; $i < $urls_count; $i++ ) {
	$index = md5( $language . $urls[ $i ] );
	$this->setItemToCache( null, 'id_from_guid_cache', $index );
}

Verbesserung, ohne Fehler:
[php]
// We should put not found values into the cache too, otherwise they will be still queried later.
$urls_count = count( $urls );
$url_values = array_values( $urls );
for ( $i = 0; $i < $urls_count; $i++ ) {
$index = md5( $language . $url_values[ $i ] );
$this->setItemToCache( null, 'id_from_guid_cache', $index );
}
<code/>

Ich habe die Verbesserungen auf einer separaten internen Testseite von uns geprüft, die Warnungen in den Logs verschwinden damit.

Eure Entwickler müssten an der Stelle abwägen, ob array_values mit for-loop oder ein foreach-loop besser geeignet ist. Ich vermute, dass der for-loop aufgrund von Performance-Optimierung existiert. Kann sein, dass der Vorteil nun weg ist, wenn der for-loop mit array_values kombiniert wird, habe jetzt keine Benchmarks gemacht.

Bitte prüft euren Code und integriert die Verbesserung in das nächste Update.

Juni 24, 2025 um 8:52 am #17163693

Andreas W.
WPML-Unterstützer seit 12/2018

Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch )

Zeitzone: America/Lima (GMT-05:00)

Beachte bitte:
Auf meiner lokalen Kopie der Website tritt der Fehler nicht auf.

Dies scheint ein Problem zu sein, dass nur auf Raidboxes oder gar nur auf deinem verwendeten Server oder speziell auf deiner Website auftritt.

Bitte erlaube uns weiterhin den Zugriff zur bereitgestellten Website, weil wir das Problem sonst nicht untersuchen können.

Sollte ich die Ursache heute nicht herausfinden können, werde ich den Second-Tier-Support konsultieren.

Juni 25, 2025 um 6:41 am #17167184

Andreas W.
WPML-Unterstützer seit 12/2018

Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch )

Zeitzone: America/Lima (GMT-05:00)

Der Fehler bezieht sich auf eine Klasse in WPML Media Translation, die versucht Medien auf Basis ihrer Source URL zu identifizieren.

Ich habe ein Snippet erstellt, der die hochgeladenen Medien nach ungültigen URLs untersucht. Das Snippet befindet sich am Ende der functions.php Datei des Child Themes.

Den Check und da Ergebnis sieht man im Menü "Media URL Check".

Hier gibt es anscheinend viele URLs, die nicht auf eine gültige Datei verlinken. Die Ursache ist, dass die originale Datei nicht mehr gefunden werden kann. Das Problem liegt demnach nicht an WPML, sondern an ungültigen Image Source URLs in der Mediathek.

files.jpg