Un utilisateur a demandé 👇

Bonjour, je sais qu’il existe un autre sujet avec le même titre et le même problème, mais celui-ci est fermé. Dans le fil suivant, l’échec de l’autre plugin est spécifié afin de ne pas rechercher de résultats inattendus. Cependant, le code est malveillant dans ce plugin car il étend la classe WordPress WP_Filesystem_Base. Et cette classe propose quelques méthodes comme « là »,…. Si un autre plugin essaie d’utiliser un exemple de WP_Filesystem, il utilise automatiquement sa classe. Si je ne veux rien mettre à jour, votre plugin n’a pas encore démarré la méthode “connect” appelée classe $attribute. Tout appel aux méthodes de remplacement de WP_Filesystem entraîne désormais un appel au mode interne “$this->link->functionname()”. Mais la liaison $this-> est toujours booléenne et donc aucune méthode affectée ne provoque l’erreur.

Ce serait bien de régler ça.

Ce sujet a été modifié il y a 1 an et 2 mois par.


(@davidanderson)

il y a 1 an, 1 mois

Salut,

Votre rapport n’a aucun sens; Il semble être basé sur une énorme incompréhension des anciennes classes PHP ; au moins votre rapport ne concerne pas le message d’erreur que vous voyez. (Et, par code « malveillant », voulez-vous dire « défectueux » ? « Malicieux » signifie « mauvais, intentionnellement malveillant ».)

David


(@papaschlumpf)

il y a 1 an, 1 mois

Bonjour, désolé d’avoir utilisé le mauvais mot. Oui, j’étais coupable. Je ne veux pas discuter de qui comprend ce qui est bien ou mal. Mon rapport correspond exactement au message d’erreur.

Si je change la valeur initiale dans votre extension de classe en $link=”; Je reçois le message d’erreur “PHP Fatal Error: Call member() function stat on wire”. Et c’est parce que la connexion $this-> n’a pas été démarrée dans le mode “connect”. C’est aussi simple que cela et ne génère aucun autre plugin.


(@davidanderson)

il y a 1 an, 1 mois

Sur le plan technique, vous êtes confus par les symptômes et les causes (si mes muscles me font mal, pas toujours parce que j’ai des blessures musculaires ; j’ai peut-être un virus. Si la douleur disparaît si je prends de l’acétaminophène, cela ne veut pas dire que c’est l’acétaminophène choses qui prennent soin des causes profondes). Votre rapport confirme le fonctionnement de l’API WP_Filesystem. L’erreur est *symptomatique* de l’utilisation incorrecte de cette API ; la *mauvaise* raison est la mauvaise utilisation. Vous devez * informer le plugin qui appelle l’API ; le symptôme, et non la cause, est que le bogue finit par se produire quelques niveaux plus bas.


(@papaschlumpf)

il y a 1 an, 1 mois

Je vous encourage à relire votre propre réponse et à la prendre comme si je l’avais écrite.

Dans certains cas le plugin est fourni (et je ne suis pas le développeur mais l’utilisateur) $wp_filesystem = WordPress::get_filesystem(); puis utilisez $wp_filesystem-> ici (/path/to/file/filename.txt); provoquant l’erreur.

L’autre plugin peut s’attendre à ce que le mode “on” fonctionne correctement. (WP_Filesystem_Base::exists($file wire) sur https://developer.wordpress.org/reference/classes/wp_filesystem_base/exists/) Dans config.php, wordpress est invité à utiliser ssh2, ce qui fait que tous les appels sont appelés dans WordPress ::get_filesystem(); utilisez WP_Filesystem_SSH2 avec la méthode “là” mal conçue. Votre version ne fonctionne correctement que si elle s’appelait auparavant “connect”.


(@schlocke)

il y a 10 mois, 1 semaine

Je pense que papaschlumpf signifie que vous devez modifier votre mode “existant”.

fichier : class-wp-filesystem-ssh2.php

changez-le de:

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

pour:

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


(@davidanderson)

il y a 10 mois, 1 semaine

Je comprends tout à fait, mais c’est faux. Un lien involontaire n’est pas une raison pour renvoyer une réponse valide dont on ne sait pas qu’elle est correcte (dans ce cas, cela indique que le fichier n’existe pas). C’est précisément le type de fromage dans lequel une exception doit être faite. Les erreurs d’hirondelle silencieuses sont une mauvaise pratique de journalisation et une source courante de failles de sécurité (cf. https://lukeplant.me.uk/blog/posts/wordpress-4.7.2-post-mortem/ ). Ces problèmes doivent être résolus à la source, et non au point où le bogue d’origine provoquerait un plantage (voir la section “A” No Crash ” dans l’article lié).

Cela a-t-il résolu votre problème ?

Was this helpful?

0 / 0

Leave a Reply 0

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