PHP : 정의되지 않은 함수 호출 : simplexml_load_string ()


85

cron 파일을 사용하여 페이스 북 카운트 기능을 구현하고 있습니다. 크론이 10 분마다 실행되고 페이지의 총 좋아요 수를 계산합니다.

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("abc@gmail.com","hi".$fb_like_count,$message);
}

하지만 정의되지 않은 호출 함수 오류가 발생합니다.


6
당신은 마 php-xml모듈이 설치 및 활성화?
marian0

답변:


154

PHP 7 및 Ubuntu 14.04의 경우 절차는 다음과 같습니다. PHP 7은 공식 Ubuntu PPA에 없기 때문에 Ondřej Surý의 PPA (sudo add-apt-repository ppa : ondrej / php)를 통해 설치했을 가능성이 높습니다. /etc/php/7.0/fpm으로 이동하여 php.ini를 편집하고 다음 줄의 주석 처리를 제거합니다.

extension=php_xmlrpc.dll

그런 다음 php7.0-xml을 설치하십시오.

sudo apt-get install php7.0-xml

그리고 PHP를 다시 시작하십시오.

sudo service php7.0-fpm restart

그리고 Apache를 다시 시작하십시오.

sudo service apache2 restart

PHP 7이 포함 된 최신 Ubuntu 버전을 사용하는 경우 절차도 동일 할 가능성이 높습니다 (타사 저장소 추가 제외).


14
즉 윈도우 확장 단지 두 번째 단계를 수행하고 작동되므로 참고하시기 바랍니다 당신은 우분투에 주석 확장 = php_xmlrpc.dll 할 필요가 없습니다
wmfrancia

나는 같은 다음 : 여전히 난 라인 (510)에 /var/www/html/magento1901/lib/Varien/Simplexml/Config.php에서 () simplexml_load_string 정의되지 않은 함수로 전화 받기
Sushivam

1
알 수없는 서비스 오류를 받았습니다. 방금 apache2를 다시 시작했는데이 문제가 해결되었습니다. 도움을 Thaks는 php.ini 파일이 줄을 찾을 수
코딩 된 컨테이너

네, 이것은 효과가 있었고 @wmfrancia가 말한 것처럼 첫 번째 단계를 건너 뛸 수있었습니다.
Linnea Huxford

나는 똑같이 시도했지만 나를 위해 일하지 않았습니다. 오류가 처리되지 않는 오류 로그 : 전화 /var/www/html/lib/Varien/Simplexml/Config.php에서 정의되지 않은 기능 (simplexml_load_string)에
킬러

51

XML 모듈이 설치되어 있지 않으면 설치하십시오.

우분투 14.04의 현재 버전 5.6 :

sudo apt-get install php5.6-xml

그리고 sudo service apache2 restart 명령을 실행하는 것을 잊지 마십시오.

줄 힐미 자이 누디


4
"sudo apt install php-xml"만 수행하면 올바른 버전을 얻을 수 있습니다.
naomi

1
그리고 그 sudo service apache2 restart후에 명령 을 실행하는 것을 잊지 마세요
Zulhilmi Zainudin

7

나는 또한이 문제에 직면했다. 내 운영 체제는 Ubuntu 18.04 이고 PHP 버전은 PHP 7.2 입니다.

해결 방법은 다음과 같습니다.

Ubuntu Server에 Simplexml을 설치합니다.

sudo apt-get install php7.2-simplexml

Apache 서버 다시 시작

sudo systemctl restart apache2

그게 다야.

이게 도움이 되길 바란다



5

php-xml 모듈이 설치되어 있고 php.ini.

응답 형식을 처리하기 쉬운 json으로 변경할 수도 있습니다. 이 경우 &format=jsonURL 쿼리 문자열 에만 추가하면 됩니다.

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

그런 다음 json_decode()스크립트에서 데이터를 검색하는 데 사용 합니다.

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

내 터미널 PHP 버전을 수정 한 다음 잘 작동합니다
anil

1

Centos 7 에서이 오류를 수정하려면 다음을 수행하십시오 .

  1. PHP 확장 설치 :

    sudo yum 설치 php-xml

  2. 웹 서버를 다시 시작하십시오. 제 경우에는 php-fpm입니다 .

    서비스 php-fpm 재시작


0

Nginx (아파치 없음) 및 PHP 7.2의 경우 php7.2-xml 설치만으로는 충분하지 않았습니다. 작동하려면 php7.2-simplexml 패키지를 설치해야했습니다.

따라서 debian / ubuntu 명령은 패키지를 업데이트하고 두 패키지를 모두 설치합니다.

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

그리고 Nginx와 PHP를 모두 다시 시작하십시오.

systemctl restart nginx php7.2-fpm
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.