我已經使用了2個多月,直到前幾天,當出現錯誤消息時工作得很好。 我使用蒸汽API來獲取玩家的一些信息。file_get_contents不能與外部網站一起工作
$url = "http://steamcommunity.com/id/CGaKeepoN/?xml=1";
頁不是空白的,它有一個XML文檔。所以我的第一個想法是,我的主機已經關閉了allow_url_fopen
,但他們不(我問他們)。
我也使用error_reporting(E_ALL); ini_set('display_errors', 1);
審判,這就是我得到:
Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "" on line 6 Notice: Trying to get property of non-object on line 7
現在我使用的是這樣的:$xml = simplexml_load_file(file_get_contents($url));
而且我會愛,因爲在安裝繼續使用它cURL現在不是一個選項。你知道一個更好的(或工作)的方式來完成這項工作嗎?或者如何解決這個錯誤?
我全碼:
error_reporting(E_ALL);
ini_set('display_errors', 1);
//$url = "http://steamcommunity.com/id/CGaKeepoN/?xml=1";
$url = "xml.txt";
ini_set('allow_url_fopen ','ON');
$xml = file_get_contents($url) or die ("file_get_contents failed");
$xml = simplexml_load_string($xml) or die ("simplexml_load_string failed");
$profilepic = $xml->avatarIcon;
$pic = $xml->avatarFull;
$steamID = $xml->steamID;
$lastonline = $xml->stateMessage;
echo $xml;
echo $profilepic;
echo $pic;
echo $steamID;
echo $lastonline;
編輯:
如果我用它加載數據的內部URL,但是當我嘗試使用使用HTTP協議的任何URL剛剛啓動file_get_contents failed
錯誤,即使該網址是我的網站之一。如果沒有其他解決方案,我願意使用cURL。我也想過如何創建一個加載數據並將其保存在服務器中的文件中的php腳本(然後每10分鐘運行一次cronjob),但無論如何它都會使用file_get_contents
...
當的file_get_contents檢索資源,你應該使用simplexml_load_string其結果。你沒有傳入文件名,而是文字數據。 - 當然,只有當它被成功提取時。您需要調試file_get_contents的結果。 – mario
我也嘗試過使用simplexml_load_string,就像我之前說過的,但我不斷收到相同的錯誤。問題在於file_get_contents沒有獲取數據。 – KeepoN
嗯,我知道。問題是爲什麼它沒有。許多可行的原因,例如用戶代理阻塞。只是在瀏覽器中測試它並不能說明任何事情。使用'curl -V' /'wget -S'從命令行進行調試,然後使用PHP和該服務器中的get_headers()來查看是否禁止流式API輪詢。 – mario