Un utente ha chiesto informazioni su SSH SFTP Updater Support di Wordpress

Errore irreversibile PHP: richiama la funzione stat di member () su booleano

Un utente ha chiesto 👇

Ciao,
So che c’è un altro thread con lo stesso titolo e lo stesso problema, ma questo è chiuso.
Nel thread successivo, viene specificato l’errore dell’altro plug-in per non verificare risultati imprevisti.
Tuttavia, il codice è dannoso all’interno di questo plugin poiché estende la classe WP_Filesystem_Base di WordPress. E questa classe offre alcuni metodi come “là”,…. Se un altro plugin cerca di utilizzare un esempio di WP_Filesystem, utilizza automaticamente la tua classe.
Se non voglio aggiornare nulla, il tuo plugin non ha ancora avviato il metodo “connect” chiamato class $ attribute. Qualsiasi chiamata ai metodi di sovrascrittura di WP_Filesystem ora risulta in una chiamata alla modalità interna “$ this-> link-> functionname ()” Ma il collegamento $ this-> è ancora booleano e quindi non ci sono metodi ad esso assegnati che causano l’errore.

Questa sarebbe una buona cosa da risolvere.

Questo argomento è stato modificato 1 anno, 5 mesi fa da.

Autore del plugin

(@davidanderson)

1 anno, 4 mesi fa

Ciao,

La tua segnalazione non ha senso; sembra essere basato su un grossolano fraintendimento dell’eredità della classe PHP; almeno il tuo rapporto non è correlato al messaggio di errore che stai visualizzando. (E – per codice “dannoso” intendi “difettoso”? “Dannoso” significa “malvagio, intenzionalmente dannoso”).

David

Lanciatore di thread

(@papaschlumpf)

1 anno, 4 mesi fa

Ciao,
Ci scusiamo per aver usato la parola sbagliata. Sì, ho sbagliato.
Non voglio discutere su chi capisce cosa è giusto o sbagliato. Il mio rapporto corrisponde esattamente al messaggio di errore.

Se cambio il valore iniziale all’interno della tua estensione di classe in $ link = “; Ricevo il messaggio di errore “Errore irreversibile PHP: Call member () function stat on wire”. E questo perché $ this-> connection non è stato avviato nella modalità “connect”.
È così semplice e non causa altri plug-in.

Autore del plugin

(@davidanderson)

1 anno, 4 mesi fa

A livello tecnico, sei confuso dai sintomi e dalle cause (se i miei muscoli soffrono, non sempre perché ho lesioni muscolari; potrei avere un virus. Se il dolore scompare se prendo il paracetamolo, ciò non significa che sia il paracetamolo le cose riguardano le cause profonde). Il tuo rapporto conferma come funziona l’API WP_Filesystem. L’errore è * sintomatico * dell’uso scorretto di quell’API; la * ragione * sbagliata è l’uso sbagliato. * Devi * segnalarlo al plugin che chiama l’API; il motivo per cui l’errore non si verifica alcuni livelli più in basso è, come ho detto, il sintomo, non la causa.

Lanciatore di thread

(@papaschlumpf)

1 anno, 4 mesi fa

Ti incoraggio a rileggere la tua risposta e a prenderla come se l’avessi scritta io.

In alcuni casi viene fornito il plugin (e non sono lo sviluppatore ma l’utente)
$ wp_filesystem = WordPress :: get_filesystem ();
e quindi utilizza
$ wp_filesystem-> ann (/path/to/file/filename.txt);
causando l’errore.

L’altro plugin potrebbe aspettarsi che la modalità “on” funzioni correttamente. (WP_Filesystem_Base :: exist (wire $ file) su https://developer.wordpress.org/reference/classes/wp_filesystem_base/exists/)
All’interno di config.php si dice che usi wordpress ssh2 che risulta in tutte le chiamate a WordPress :: get_filesystem (); utilizzare WP_Filesystem_SSH2 con il metodo progettato in modo improprio “lì”. La tua versione funziona correttamente solo se precedentemente chiamata “connetti”.

(@schlocke)

1 anno, 1 mese fa

Penso che papaschlumpf significhi, dovresti modificare la tua modalità “esistente”.

file: class-wp-filesystem-ssh2.php

cambiarlo da:

        public function exists($file) {
                return $this->link->stat($file) !== false;
        }

per:

        public function exists($file) {
                if (!is_a($this->link, 'Net_SFTP')) return false;
                return $this->link->stat($file) !== false;
        }

Autore del plugin

(@davidanderson)

1 anno, 1 mese fa

Capisco perfettamente, ma è sbagliato. Un collegamento involontario non è un motivo per restituire una risposta valida che non è nota per essere corretta (in questo caso, indicando che il file non esiste). È proprio il tipo di formaggio in cui va fatta un’eccezione. Gli errori di deglutizione silenziosa sono una cattiva pratica di registrazione e una fonte comune di falle di sicurezza (cfr. https://lukeplant.me.uk/blog/posts/wordpress-4.7.2-post-mortem/ ). Tali problemi dovrebbero essere risolti alla fonte, non al punto che l’errore originale avrebbe portato a un incidente (cfr nella sezione “A” Non andare in crash “nell’articolo collegato).

Was this helpful?

0 / 0

Lascia un commento 0

Your email address will not be published. Required fields are marked *