PHP: Llamada a función indefinida: simplexml_load_string()

4 minutos de lectura

avatar de usuario
añil

Estoy implementando la función de conteo de Facebook usando un archivo cron. En el que cron se ejecuta cada 10 minutos y cuenta los me gusta totales de una página.

for($i=0;$i<3;$i++){
    $source_url =$cars[$i];
    $rest_url = "http://api.facebook.com/restserver.php?method=links.getStats&urls=".urlencode($source_url);
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL,$rest_url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $content = curl_exec($curl);
    curl_close($curl);
    $message=stripslashes($content);
    $xml_record = simplexml_load_string($message);
    $fb_like_count = $xml_record->link_stat->like_count;
    echo "".$fb_like_count;
    mail("[email protected]","hi".$fb_like_count,$message);
}

Pero recibo un error de función de llamada indefinida.

  • Tienes php-xml módulo instalado y habilitado?

    – marian0

    3 de julio de 2015 a las 11:57


avatar de usuario
andreas bergström

Para PHP 7 y Ubuntu 14.04, el procedimiento es el siguiente. Dado que PHP 7 no está en los PPA oficiales de Ubuntu, es probable que lo haya instalado a través del PPA de Ondřej Surý (sudo add-apt-repository ppa:ondrej/php). Vaya a /etc/php/7.0/fpm y edite php.ini, descomente la siguiente línea:

extension=php_xmlrpc.dll

Luego simplemente instale php7.0-xml:

sudo apt-get install php7.0-xml

Y reinicie PHP:

sudo service php7.0-fpm restart

Y reinicie Apache:

sudo service apache2 restart

Si está en una versión posterior de Ubuntu donde se incluye PHP 7, lo más probable es que el procedimiento también sea el mismo (excepto si agrega un repositorio de terceros).

  • Solo para su información, no necesita descomentar extension=php_xmlrpc.dll en Ubuntu, ya que es una extensión de Windows, solo haga el segundo paso y funcionará.

    – wmfrancia

    11/10/2016 a las 16:42

  • Seguí lo mismo: todavía recibo una llamada a la función indefinida simplexml_load_string() en /var/www/html/magento1901/lib/Varien/Simplexml/Config.php en la línea 510

    – Sushivam

    26 de octubre de 2016 a las 6:16

  • Recibí un error de servicio no reconocido. Acabo de reiniciar apache2 y esto solucionó este problema. Gracias por la ayuda para encontrar esta línea en PHP.ini

    – Contenedor Codificado

    28/10/2016 a las 17:28

  • sí, esto funcionó, y pude omitir el primer paso como dijo @wmfrancia.

    – Linnea Huxford

    24 de diciembre de 2016 a las 20:02

  • Intenté lo mismo pero no funcionó para mí. Del registro de errores Error no detectado: llamada a la función no definida simplexml_load_string() en /var/www/html/lib/Varien/Simplexml/Config.php

    – Shubham AgaRwal

    29 de marzo de 2017 a las 22:46

avatar de usuario
Fabián Blechschmidt

Si el módulo XML no está instalado, instálelo.

Versión actual 5.6 en ubuntu 14.04:

sudo apt-get install php5.6-xml

Y no te olvides de ejecutar el comando sudo service apache2 restart después

Zulhilmi Zainudi

  • Simplemente puede hacer “sudo apt install php-xml” y obtendrá la versión correcta para usted.

    – noemí

    25 oct 2018 a las 11:35

  • Y no olvides correr sudo service apache2 restart comando después de eso

    – Zulhilmi Zainudin

    11 de mayo de 2020 a las 8:45

También me enfrenté a este problema. Mi sistema operativo es Ubuntu 18.04 y mi versión de PHP es PHP 7.2.

Así es como lo resolví:

Instale Simplexml en su servidor Ubuntu:

sudo apt-get install php7.2-simplexml

Reiniciar el servidor Apache

sudo systemctl restart apache2

Eso es todo.

espero que esto ayude

Asegúrese de tener el módulo php-xml instalado y habilitado en php.ini.

También puede cambiar el formato de respuesta a json, que es más fácil de manejar. En ese caso solo tienes que agregar &format=json a la cadena de consulta de URL.

$rest_url = "http://api.facebook.com/restserver.php?method=links.getStats&format=json&urls=".urlencode($source_url);

y luego usar json_decode() para recuperar datos en su script:

$result = json_decode($content, true);
$fb_like_count = $result['like_count'];

avatar de usuario
Björn Pfoster

Creo que puede ser algo como en esta publicación: la clase ‘SimpleXMLElement’ no se encuentra en Puphpet PHP 5.6. Entonces, tal vez podría instalar/activar

php-xml or php-simplexml

No olvides activar las bibliotecas en el php.ini expediente. (como el comentario de arriba)

  • También prueba esto Enlace

    – Björn Pfoster

    26 de julio de 2017 a las 11:43

Para Nginx (sin apache) y PHP 7.2, instalar php7.2-xml no fue suficiente. Tuve que instalar el paquete php7.2-simplexml para que funcionara

Entonces los comandos para debian/ubuntu, actualizar paquetes e instalar ambos paquetes

apt update
apt install php7.2-xml php7.2-simplexml

Y reinicie Nginx y php

systemctl restart nginx php7.2-fpm

  • También prueba esto Enlace

    – Björn Pfoster

    26 de julio de 2017 a las 11:43

avatar de usuario
yesnik

Para corregir este error en Centos 7:

  1. Instale la extensión PHP:

    sudo yum instalar php-xml

  2. Reinicie su servidor web. en mi caso es php-fpm:

    reinicio de servicios php-fpm

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad