PHP: Gọi đến hàm không xác định: simplexml_load_string ()


85

Tôi đang thực hiện chức năng đếm facebook bằng cách sử dụng tệp cron. Trong đó cron chạy 10 phút một lần và đếm tổng lượt thích của một trang.

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);
}

Nhưng tôi đang gặp lỗi chức năng gọi không xác định.


6
Bạn đã php-xmlcài đặt và kích hoạt mô-đun chưa?
marian0

Câu trả lời:


154

Đối với PHP 7 và Ubuntu 14.04, quy trình như sau. Vì PHP 7 không có trong các PPA chính thức của Ubuntu nên bạn có thể đã cài đặt nó thông qua PPA của Ondřej Surý (sudo add-apt-repository ppa: ondrej / php). Truy cập /etc/php/7.0/fpm và chỉnh sửa php.ini, bỏ ghi chú vào dòng sau:

extension=php_xmlrpc.dll

Sau đó, chỉ cần cài đặt php7.0-xml:

sudo apt-get install php7.0-xml

Và khởi động lại PHP:

sudo service php7.0-fpm restart

Và khởi động lại Apache:

sudo service apache2 restart

Nếu bạn đang sử dụng phiên bản Ubuntu mới hơn có bao gồm PHP 7, thì quy trình này cũng rất có thể giống như vậy (ngoại trừ việc thêm bất kỳ kho lưu trữ nào của bên thứ 3).


14
Chỉ cần FYI bạn không cần phải mở rộng bỏ ghi chú = php_xmlrpc.dll trên Ubuntu như đó là một phần mở rộng cửa sổ chỉ làm bước thứ hai và nó sẽ làm việc
wmfrancia

i sau cùng: tôi vẫn nhận được cuộc gọi đến chức năng xác định simplexml_load_string () trong /var/www/html/magento1901/lib/Varien/Simplexml/Config.php on line 510
Sushivam

1
Tôi đã nhận được một lỗi dịch vụ không được công nhận. Tôi vừa khởi động lại apache2 và điều này đã khắc phục sự cố này. Rất mong sự giúp đỡ tìm dòng này trong PHP.ini
chứa được mã hóa.

vâng, điều này đã hiệu quả và tôi có thể bỏ qua bước đầu tiên như @wmfrancia đã nêu.
Linnea Huxford

Tôi đã thử tương tự nhưng không hiệu quả với tôi. Từ lỗi đăng nhập Lỗi chưa gặp: Gọi đến chức năng xác định simplexml_load_string () trong /var/www/html/lib/Varien/Simplexml/Config.php
killer

51

Nếu mô-đun XML chưa được cài đặt, hãy cài đặt nó.

Phiên bản hiện tại 5.6 trên ubuntu 14.04:

sudo apt-get install php5.6-xml

Và đừng quên chạy lệnh khởi động lại sudo service apache2 sau nó

Zulhilmi Zainudi


4
Bạn chỉ cần thực hiện "sudo apt install php-xml" và nó sẽ nhận được phiên bản chính xác cho bạn.
naomi

1
Và đừng quên chạy sudo service apache2 restartlệnh sau nó
Zulhilmi Zainudin

7

Tôi cũng phải đối mặt với vấn đề này. Hệ điều hành của tôi là Ubuntu 18.04 và phiên bản PHP của tôi là PHP 7.2 .

Đây là cách tôi đã giải quyết nó:

Cài đặt Simplexml trên Máy chủ Ubuntu của bạn:

sudo apt-get install php7.2-simplexml

Khởi động lại máy chủ Apache

sudo systemctl restart apache2

Đó là tất cả.

Tôi hi vọng cái này giúp được



5

Đảm bảo rằng bạn đã cài đặt và bật mô-đun php-xml php.ini.

Bạn cũng có thể thay đổi định dạng phản hồi thành json để dễ xử lý hơn. Trong trường hợp đó, bạn chỉ &format=jsonphải thêm vào chuỗi truy vấn url.

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

Và sau đó sử dụng json_decode()để truy xuất dữ liệu trong tập lệnh của bạn:

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

tôi đã sửa đổi phiên bản php thiết bị đầu cuối của tôi sau đó nó đang làm việc tốt
Anil

1

Để khắc phục lỗi này trên Centos 7 :

  1. Cài đặt phần mở rộng PHP:

    sudo yum cài đặt php-xml

  2. Khởi động lại máy chủ web của bạn. Trong trường hợp của tôi, đó là php-fpm :

    khởi động lại dịch vụ php-fpm


0

Đối với Nginx (không có apache) và PHP 7.2, cài đặt php7.2-xml là không đủ. Phải cài đặt gói php7.2-simplexml để nó hoạt động

Vì vậy, các lệnh cho debian / ubuntu, cập nhật gói và cài đặt cả hai gói

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

Và khởi động lại cả Nginx và php

systemctl restart nginx php7.2-fpm
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.