在禁用curl的主機上使用curl有沒有其他選擇?php libcurl替代方案
3
A
回答
3
7
要通過HTTP獲取的內容,第一,你可以用file_get_contents
嘗試;您的主機可能沒有禁用HTTP://流:
$str = file_get_contents('http://www.google.fr');
位,這可能被禁用(見allow_url_fopen
);有時是...
如果它被禁用,您可以嘗試使用fsockopen;手冊中給出的例子說,這(引用):
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET/HTTP/1.1\r\n";
$out .= "Host: www.example.com\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
考慮到這是相當低的水平,但(你是直接寫給用插座的工作,和HTTP協議是沒有那麼簡單),使用一個使用它的圖書館會讓你的生活更輕鬆。
2
您可以使用PHP編寫一個簡單的curl服務器腳本,並將其放置在啓用curl的託管中,並且當您需要curl時 - 您可以在需要時從無捲曲機器調用客戶端調用,並且它會返回您需要的數據。可能是一個奇怪的解決方案,但有一次有幫助。
2
此主題中的所有答案都提供了有效的解決方法,但有一點您應該記住。無論出於何種原因,您所在的主機都認爲通過PHP代碼從您的Web服務器發出HTTP請求是一件「壞事」,因此已禁用(或未啓用)curl擴展。如果您找到解決方法,並且他們注意到他們會以其他方式阻止您的請求,那麼確實有很好的機會。除非有政治上的原因強迫你使用這個特定的主機,否則認真考慮如果需要發送http請求,請將你的應用/頁面移到其他地方。
相關問題
- 1. PHP get_headers()替代方案
- 2. PHP的非PHP替代方案包括
- 3. playN替代方案
- 4. Example.com替代方案
- 5. TFS替代方案
- 6. WSO2替代方案
- 7. Nginx:more_clear_headers替代方案
- 8. AppDomain.AppendPrivatePath替代方案?
- 9. Javascript。替代方案
- 10. android.net.wifi.WIFI_HOTSPOT_CLIENTS_CHANGED替代方案
- 11. MediaMetadataRetriever替代方案?
- 12. HTMLElementVariable.animate(...)替代方案?
- 13. 替代方案deleteOnExit
- 14. VSTO替代方案
- 15. 帶有PHP的AppMobi/Phonegap替代方案
- 16. PHP 5.4.17「...運算符」的替代方案
- 17. PHP的openssl_random_pseudo_bytes Golang的替代方案?
- 18. 用於ODBC的PHP bind_param替代方案?
- 19. 訪問PHP函數的替代方案
- 20. 計劃任務PHP替代方案
- 21. array_map的替代方案PHP 5.2
- 22. PHP頭函數的替代方案
- 23. 使用PHP的Apache RewriteLock替代方案?
- 24. 用於php的mysqli_stmt_get_result替代方案5.2.6
- 25. 用於PHP的mysql_real_escape_string的替代方案
- 26. PHP郵件的替代方案
- 27. PHP中的枚舉的替代方案
- 28. Node.js的PHP包函數替代方案
- 29. PHP_excel的替代方案
- 30. Appcache的替代方案
這是很好的答案,謝謝! – Phil 2009-08-28 18:10:24