Эта функция работает на localhost, но не на моем удаленном сервере.
Я спросил об этом хозяина сервера, и он сказал мне, что PHP CURL включен, и все должно работать нормально.
И вот код:
$ url, с которым я тестирую:
$url = "http://bus.go.kr/getSubway_6.jsp?statnId=1003000323&subwayId=1003"
Вот функция:
function file_get_html_using_cURL($url) { if (!function_exists('curl_init')){ die('CURL is not installed!'); } $ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPGET, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_DNS_USE_GLOBAL_CACHE, false ); curl_setopt($ch, CURLOPT_DNS_CACHE_TIMEOUT, 2 ); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, faslse); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); $output = curl_exec($ch); if(curl_errno($ch)){ echo 'Curl error: ' . curl_error($ch); echo "\n--------------------\n"; print_r(curl_getinfo($ch)); echo "\n--------------------\n"; } $output = str_get_html($output); // <-- Important line to convert string into object! curl_close($ch); return $output; }
И это то, что возвращается на странице сайта:
Curl error: Couldn't resolve host 'bus.go.kr' -------------------- Array ( [url] => http://bus.go.kr/getSubway_6.jsp?statnId=1003000323&subwayId=1003 [content_type] => [http_code] => 0 [header_size] => 0 [request_size] => 0 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0 [namelookup_time] => 0 [connect_time] => 0 [pretransfer_time] => 0 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => -1 [starttransfer_time] => 0 [redirect_time] => 0 [certinfo] => Array ( ) ) --------------------
Я не знаю, почему это не работает на удаленном сервере.
Что мне делать?
curl
включен и отлично работает в вашем случае. К сожалению, сервер, на котором он выполняется, не может разрешить имя bus.go.kr
Разрешение в этом контексте означает поиск IP-адреса интернет-хоста, имя которого известно.
Проблем может быть много. Если он постоянный, сервер, вероятно, неправильно настроен. Если это временно, то это, вероятно, проблема с подключением.
Вы можете сделать больше проверок с разными URL-адресами, например http://www.google.com , и посмотреть, какие результаты вы получите. Если вы не можете связаться ни с одним из них, это проблема конфигурации.
попробуйте использовать curl_setopt ($ ch, CURLOPT_SSL_VERIFYHOST, FALSE);