Pregunta sobre SSH SFTP Updater Support de Wordpress:

Error fatal de PHP: llamar a la función member () en booleano

Un usuario preguntó 👇

Hola, sé que hay otro hilo con el mismo título y el mismo problema, pero este está cerrado. En el siguiente hilo, se especifica la falla del otro plugin para no buscar resultados inesperados. Sin embargo, el código es malicioso dentro de este plugin ya que extiende la clase WordPress WP_Filesystem_Base. Y esta clase ofrece algunos métodos como «allí»,…. Si otro plugin intenta usar un ejemplo de WP_Filesystem, automáticamente usa su clase. Si no quiero actualizar nada, su plugin aún no ha iniciado el método «conectar» llamado clase $ atributo. Cualquier llamada a los métodos de sobrescritura de WP_Filesystem ahora resulta en una llamada al modo interno «$ this-> link-> functionname ()». Pero el enlace $ this-> sigue siendo booleano y, por lo tanto, ningún método asignado está causando el error.

Sería bueno arreglar esto.

Este tema fue modificado hace 1 año, 2 meses por.

(@davidanderson)

Hace 1 año, 1 mes

Hola,

Su informe no tiene sentido; parece estar basado en un gran malentendido del legado de clases PHP; al menos su informe no se relaciona con el mensaje de error que está viendo. (Y, por código “malicioso”, ¿quiere decir “defectuoso”? “Malicioso” significa “maligno, intencionalmente malicioso”).

David

(@papaschlumpf)

Hace 1 año, 1 mes

Hola, lo siento por usar la palabra incorrecta. Sí, tuve la culpa. No quiero discutir sobre quién entiende lo que está bien o mal. Mi informe encaja exactamente con el mensaje de error.

Si cambio el valor inicial dentro de la extensión de su clase a $ link = ”; Recibo el mensaje de error «Error fatal de PHP: Call member () function stat on wire». Y esto se debe a que la conexión $ this-> no se inició dentro del modo «conectar». Es tan simple como eso y no genera ningún otro plugin.

(@davidanderson)

Hace 1 año, 1 mes

A nivel técnico, te confunden los síntomas y las causas (si me duelen los músculos, no siempre porque tengo lesiones musculares; puedo tener un virus. Si el dolor desaparece si tomo paracetamol, eso no significa son las cosas del paracetamol que se ocupan de las causas fundamentales). Su informe confirma cómo funciona la API WP_Filesystem. El error es * sintomático * del uso incorrecto de esa API; la * razón * incorrecta es el uso incorrecto. Debe * informarlo al plugin que llama a la API; el síntoma, no la causa, es que el error eventualmente ocurre unos niveles más abajo.

(@papaschlumpf)

Hace 1 año, 1 mes

Te animo a que vuelvas a leer tu propia respuesta y la tomes como si yo la hubiera escrito.

En algunos casos, se proporciona el plugin (y no soy el desarrollador sino el usuario) $ wp_filesystem = WordPress :: get_filesystem (); y luego use $ wp_filesystem-> allí (/path/to/file/filename.txt); causando el error.

El otro plugin puede esperar que el modo «encendido» funcione correctamente. (WP_Filesystem_Base :: existe (cable $ file) en https://developer.wordpress.org/reference/classes/wp_filesystem_base/exists/) Dentro de config.php, se le dice a wordpress que use ssh2, lo que da como resultado que todas las llamadas sean llamadas en WordPress :: get_filesystem (); use WP_Filesystem_SSH2 con el método diseñado incorrectamente «allí». Su versión solo funciona correctamente si se la llamó anteriormente «conectar».

(@schlocke)

Hace 10 meses, 1 semana

Creo que papaschlumpf significa que debes modificar tu modo «existente».

archivo: class-wp-filesystem-ssh2.php

cámbialo de:

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

a:

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

(@davidanderson)

Hace 10 meses, 1 semana

Entiendo perfectamente, pero está mal. Un enlace involuntario no es una razón para devolver una respuesta válida que no se sabe que es correcta (en este caso, indica que el archivo no existe). Es precisamente el tipo de queso en el que debe hacerse una excepción. Los errores de deglución silenciosa son una mala práctica de registro y una fuente común de agujeros de seguridad (cf. https://lukeplant.me.uk/blog/posts/wordpress-4.7.2-post-mortem/ ). Estos problemas deben solucionarse en la fuente, no en el punto en el que el error original provocaría un accidente (consulte la sección “A“ No chocar ”en el artículo vinculado).

¿Solucionó tu problema??

0 / 0

Deja una respuesta 1

Tu dirección de correo electrónico no será publicada.