Salta la navigazione

Questo è il forum di assistenza tecnica di WPML, il plug-in multilingue di WordPress.

La sua lettura è permessa a tutti, ma la pubblicazione è riservata esclusivamente ai clienti di WPML. Il team di WPML risponde sul forum 6 giorni su 7, 22 ore su 24.

Etichettato: 

Questo ticket contiene 13 risposte, ha 0 voci.

Ultimo aggiornamento da Laura 1 mese fa.

Assistito da: Laura.

Autore Post
Maggio 5, 2025 alle 8:12 am #16995155

gianluca

Contesto del problema:
Sul mio sito WordPress si verifica un errore fatale (E_ERROR) all’avvio dell’area di amministrazione, legato al plugin WPML Multilingual CMS. L’errore compare nelle prime fasi di caricamento di WPML e impedisce l’accesso alla dashboard.

Sintomi:
Errore E_ERROR in class-wpml-action-type.php: array_intersect() riceve false anziché array

Domande:
Dettagli tecnici:

WordPress: 6.x (ultima versione aggiornata)

Plugin WPML Multilingual CMS: 4.x (ultima versione aggiornata)

WPML Translation Management: 4.x

PHP: 8.1

Server: Linux (Plesk su Aruba Business)

Percorso file incriminato:
/var/www/vhosts/tecnoindustriapiping.com/httpdocs/wp-content/plugins/sitepress-multilingual-cms/classes/action-filter-loader/class-wpml-action-type.php

Linea: 72

Messaggio di errore completo:

css
Copia
Modifica
Uncaught TypeError: array_intersect(): Argument #1 ($array) must be of type array, false given in
/var/www/vhosts/tecnoindustriapiping.com/httpdocs/wp-content/plugins/sitepress-multilingual-cms/classes/action-filter-loader/class-wpml-action-type.php:72
Stack trace:
#0 .../class-wpml-action-type.php(72): array_intersect()
#1 .../class-wpml-action-type.php(63): WPMLActionType->has_implementation()
#2 .../class-wpml-action-filter-loader.php(37): WPMLActionType->is()
#3 .../tm.php(167): WPML_Action_Filter_Loader->load()
#4 .../class-wp-hook.php(324): wpml_tm_load()
#5 .../class-wp-hook.php(348): WP_Hook->apply_filters()
#6 .../plugin.php(517): WP_Hook->do_action()
#7 .../sitepress.class.php(527): do_action()
#8 .../class-wp-hook.php(324): SitePress->init()
#9 .../class-wp-hook.php(348): WP_Hook->apply_filters()
#10 .../plugin.php(517): WP_Hook->do_action()
#11 .../wp-settings.php(578): do_action()
#12 .../wp-config.php(111): require_once('...')
#13 .../wp-load.php(50): require_once('...')
#14 .../admin.php(35): require_once('...')
#15 .../edit.php(10): require_once('...')
#16 {main}
Come riprodurre il problema:

Accedo al back-end di WordPress (/wp-admin).

Viene intercettata subito la chiamata al filtro di WPML e compare il fatal error.

Non è possibile proseguire oltre.

Tentativi di risoluzione già effettuati:

Disattivato e riattivato WPML e i suoi addon (Translation Management, String Translation, Media Translation).

Aggiornato all’ultima versione di tutti i plugin WPML.

Abilitato WP_DEBUG e verificato che il problema nasce da apply_filters( $filter_name, false ), che restituisce false invece di un array.

Provato a forzare un override via snippet in functions.php:

php
Copia
Modifica
add_filter( 'wpml_action_type_XXX_implementations', function( $implementations ) {
return is_array( $implementations ) ? $implementations : [];
} );
ma non ho identificato con certezza il nome esatto del filtro coinvolto.

Applicato provvisoriamente patch al core del plugin:

php
Copia
Modifica
$implementations = apply_filters( $filter_name, false );
if ( ! is_array( $implementations ) ) {
$implementations = [];
}
sulla riga 71 prima di array_intersect(), risolvendo l’errore, ma chiaramente non è una soluzione definitiva (patch sovrascrivibile).

Richiesta:

Potete indicarmi il nome esatto del filtro che WPML usa per registrare le implementazioni di questo “action type”?

Esiste già una correzione ufficiale in sviluppo o una versione in beta che evita apply_filters(..., false)?

Qual è la procedura raccomandata per garantire che $implementations sia sempre un array, senza patch manuali al core?

Resto a disposizione per fornire ulteriori log o informazioni di debug. Grazie in anticipo per l’aiuto!

Cordiali saluti,

Maggio 5, 2025 alle 3:15 pm #16997066

Laura
Sostenitore di WPML dal 05/2018

Lingue: Inglese (English ) Italiano (Italiano )

Fuso orario: Europe/Rome (GMT+02:00)

Salve,

grazie per averci contattato. Non ho visto altri report relativi a questo errore, ho inviato al secondo livello.

Maggio 9, 2025 alle 2:11 pm #17017068

gianluca

Gentile team di supporto,

sto riscontrando lo stesso problema su due siti diversi. Di seguito riporto un estratto dal log errori del secondo sito interessato (tecnoindustriapi.com), che presenta un comportamento identico a quello già riscontrato su un altro progetto:

swift
Copia
Modifica
[09-May-2025 14:07:12 UTC] PHP Warning: file_exists(): open_basedir restriction in effect. File(WP Endpoints-en_US.mo) is not within the allowed path(s): (/home/tecnoindustriapi/:/opt/cpanel/ea-php83/root/usr:/usr/local/lib/php:/tmp:/etc/pki/tls/certs/ca-bundle.crt:/var/cpanel/php/sessions:/usr/local/bin/wp) in /home/tecnoindustriapi/public_html/wp-content/plugins/wpml-string-translation/classes/MO/Hooks/LoadTranslationFile.php on line 82

[09-May-2025 14:07:12 UTC] PHP Warning: file_exists(): open_basedir restriction in effect. File(WP Endpoints-en_US.l10n.php) is not within the allowed path(s): (...) in /wp-content/plugins/wpml-string-translation/classes/MO/Hooks/LoadTranslationFile.php on line 85
Inoltre, riscontro anche un errore fatale sul tema:

pgsql
Copia
Modifica
thrown in /wp-content/themes/hello-elementor/functions.php on line 273
Sembra che il problema sia legato alla restrizione open_basedir, che impedisce il corretto caricamento di file .mo e .l10n.php utilizzati per le traduzioni.

Potreste gentilmente indicarmi come risolvere questo problema? Esiste una soluzione o una configurazione consigliata per ambienti server con queste restrizioni?

Resto a disposizione per fornire ulteriori dettagli o accessi se necessari.

Grazie in anticipo per l’assistenza.

Maggio 9, 2025 alle 7:58 pm #17017828

Laura
Sostenitore di WPML dal 05/2018

Lingue: Inglese (English ) Italiano (Italiano )

Fuso orario: Europe/Rome (GMT+02:00)

Non ho capito, questo errore è diverso da quello che mi avevi dato in precedenza. Sussistono entrambi?

Dal secondo livello mi dicono di provare a cancellare WPML e reinstallarlo via FTP.

Maggio 12, 2025 alle 5:51 am #17020984

gianluca

Buongiorno Laura, mi deve scusare mi sono accorto che ho lo stesso problema in due siti diversi quello che ho segnalato quando ho aperto il ticket e quello segnalato in un ticket aperto precedentemente con una sua collega, ho chiesto supporto anche al server che dopo una dettagliata ricerca mi ha analizzato ll problema ... allego la risposta come vedra parla del dominio diverso ma la problematica e la stessa suppongo che si sia verificato dopo uno spostamento di dominio.. ma non riesco a risolvere.

Buonasera,

l’errore di open_basedir seguente

[11-May-2025 18:52:05 UTC] PHP Warning: file_exists(): open_basedir restriction in effect. File(WP Endpoints-it_IT.l10n.php) is not within the allowed path(s): (/home/mediafrigo/:/opt/cpanel/ea-php83/root/usr:/usr/local/lib/php:/tmp:/etc/pki/tls/certs/ca-bundle.crt:/var/cpanel/php/sessions:/usr/local/bin/wp) in /home/mediafrigo/public_html/wp-content/plugins/wpml-string-translation/classes/MO/Hooks/LoadTranslationFile.php on line 88
viene generato perchè “WP Endpoints-it_IT.l10n.php” non è un percorso valido, è solo un nome di file privo di percorso assoluto o relativo. Questo causa il problema con file_exists() sotto open_basedir. Dunque andando alla riga 88 del file indicato troviamo il seguente codice:

84 $defaultPathPHP = self::replaceMoExtensionWithPhp( $defaultPathFile );
85 if ( file_exists( $defaultPathFile ) ) {
86 return $defaultPathFile;
87 }
88 if ( file_exists( $defaultPathPHP ) ) {
89 return $defaultPathPHP;
90 }
91 return null;
Il problema qui è che il valore della variabile $defaultPathPHP viene generato sbagliato. Andando a fare un DEBUG può essere molto lungo e complicato e sicuramente non di nostra competenza. Ad esempio si dovrebbe andare a vedere dove è definita la funzione replaceMoExtensionWithPhp() e a sua volta andando a ritroso andare a vedere il motivo per cui alla fine il valore del nome del file è sbagliato.

Maggio 12, 2025 alle 1:50 pm #17023309

Laura
Sostenitore di WPML dal 05/2018

Lingue: Inglese (English ) Italiano (Italiano )

Fuso orario: Europe/Rome (GMT+02:00)

Entrambi gli errori dicono che c'è una restrizione su open_basedir, quella generalmente è causata dalle impostazioni del server perché WPML non interviene su quella.

Maggio 12, 2025 alle 1:53 pm #17023320

gianluca

si ma lo fa su un link che non esiste... errato
ho questo plugin su altre server uguali dovrei vedere lo stesso errore ...

Maggio 12, 2025 alle 2:32 pm #17023469

Laura
Sostenitore di WPML dal 05/2018

Lingue: Inglese (English ) Italiano (Italiano )

Fuso orario: Europe/Rome (GMT+02:00)

Com'è stato installato WPML?

Maggio 12, 2025 alle 2:44 pm #17023519

gianluca

ciao grazie per il tuo interesse ma sta succedendo una cosa molto strana...

ho attivato wpml con il plugin OTGS Installer.. poi ho fatto il trasferimento al dominio ufficiale

da link nascosto verso link nascosto

stessa cosa per il sito su mediafrigo.com
ho usato OTGS Installer.

prima era sul dominio media.soloproveweb.it e poi spostato su mediafrigo.com

in tutti ho provato a cancellare i plugin trammite ftp e poi rinstallati in modo normale..
ma ancora ho gli stessi errori..
non è possibile che il trasferimento abbia modificato un url impostandolo in modo errato?
grazie e scusa ma non riesco a risolvere questa serie di errori sono solo in questi due ..

Maggio 12, 2025 alle 2:48 pm #17023540

Laura
Sostenitore di WPML dal 05/2018

Lingue: Inglese (English ) Italiano (Italiano )

Fuso orario: Europe/Rome (GMT+02:00)

Dipende come hai fatto il trasferimento. Hai provato a fare un search and replace sul database?

Maggio 12, 2025 alle 3:07 pm #17023752

gianluca

si trammite plugin ... Better Search Replace

Maggio 12, 2025 alle 3:40 pm #17023912

Laura
Sostenitore di WPML dal 05/2018

Lingue: Inglese (English ) Italiano (Italiano )

Fuso orario: Europe/Rome (GMT+02:00)

Prova a mandarmi una copia di uno dei due siti con Duplicator o WP All In One Migration e vediamo se il problema si presenta anche in locale.

Maggio 12, 2025 alle 4:15 pm #17024011

gianluca

ho usato plugin duplicator qui il link per scaricare:

link nascosto

Maggio 13, 2025 alle 4:20 pm #17029066

Laura
Sostenitore di WPML dal 05/2018

Lingue: Inglese (English ) Italiano (Italiano )

Fuso orario: Europe/Rome (GMT+02:00)

L'errore non è riproducibile il locale.

Se è correlato a open_basedir dovremmo sapere com'è configurato esattamente il server, per vedere se è correlato a quello, oppure puoi provare a cancellare il file WP Endpoints-it_IT.l10n.php in modo da far riferimento solo ai file .mo