Wdrażam funkcję liczenia facebooków za pomocą pliku cron. W którym cron działa co 10 minut i zlicza wszystkie polubienia strony.
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);
}
Ale otrzymuję niezdefiniowany błąd funkcji połączenia.
php-xml
zainstalowany i włączony moduł?Odpowiedzi:
W przypadku PHP 7 i Ubuntu 14.04 procedura jest następująca. Ponieważ PHP 7 nie znajduje się w oficjalnych PPA Ubuntu, prawdopodobnie zainstalowałeś go za pośrednictwem PPA Ondřeja Surý (sudo add-apt-repository ppa: ondrej / php). Przejdź do /etc/php/7.0/fpm i edytuj php.ini, odkomentuj do następującej linii:
extension=php_xmlrpc.dll
Następnie po prostu zainstaluj php7.0-xml:
sudo apt-get install php7.0-xml
I zrestartuj PHP:
sudo service php7.0-fpm restart
I zrestartuj Apache:
sudo service apache2 restart
Jeśli korzystasz z późniejszej wersji Ubuntu, która zawiera PHP 7, procedura jest najprawdopodobniej taka sama (z wyjątkiem dodawania repozytorium stron trzecich).
źródło
Jeśli moduł XML nie jest zainstalowany, zainstaluj go.
Aktualna wersja 5.6 na Ubuntu 14.04:
sudo apt-get install php5.6-xml
Zulhilmi Zainudi
źródło
sudo service apache2 restart
polecenia po nimJa też miałem do czynienia z tym problemem. Mój system operacyjny to Ubuntu 18.04, a wersja PHP to PHP 7.2 .
Oto jak to rozwiązałem:
Zainstaluj Simplexml na swoim serwerze Ubuntu:
sudo apt-get install php7.2-simplexml
Uruchom ponownie serwer Apache
To wszystko.
mam nadzieję, że to pomoże
źródło
Myślę, że może to być coś takiego w tym poście: Klasa 'SimpleXMLElement' nie została znaleziona w marionetce PHP 5.6 Więc może mógłbyś zainstalować / aktywować
Nie zapomnij aktywować bibliotek w pliku php.ini . (jak najwyższy komentarz )
źródło
Upewnij się, że masz zainstalowany i włączony moduł php-xml w
php.ini
.Możesz także zmienić format odpowiedzi na json, który jest łatwiejszy w obsłudze. W takim przypadku wystarczy dodać
&format=json
do adresu URL zapytanie.$rest_url = "http://api.facebook.com/restserver.php?method=links.getStats&format=json&urls=".urlencode($source_url);
Następnie użyj,
json_decode()
aby pobrać dane w swoim skrypcie:$result = json_decode($content, true); $fb_like_count = $result['like_count'];
źródło
Aby naprawić ten błąd w Centos 7 :
Zainstaluj rozszerzenie PHP:
sudo yum zainstaluj php-xml
Uruchom ponownie serwer WWW. W moim przypadku jest to php-fpm :
usługi php-fpm restart
źródło
W przypadku Nginx (bez apache) i PHP 7.2 instalacja php7.2-xml nie wystarczyła. Musiałem zainstalować pakiet php7.2-simplexml, aby działał
Więc polecenia dla debian / ubuntu, zaktualizuj pakiety i zainstaluj oba pakiety
apt update apt install php7.2-xml php7.2-simplexml
I zrestartuj zarówno Nginx, jak i php
systemctl restart nginx php7.2-fpm
źródło