Этот сайт работает уже несколько месяцев и работает отлично. У меня есть страница PHP, которая создает счет-фактуру из данных в URL-адресе (например, viewinvoice.php? Id = 250 строит счет-фактуру на основе записи 250). Эта страница доступна через веб-браузер и отлично работает.
На совершенно другой странице (т.е. test.php) я пытаюсь получить доступ к этому файлу через cURL. Однако, когда я делаю вызов и var_dump результаты, я получаю bool (false).
Вот функция, которая вызывает вызов cURL:
function file_get_contents_curl($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); $data = curl_exec($ch); curl_close($ch); return $data; }
HOME – это константа, которая обозначает полный URL-адрес (например, http://www.example.com/ ).
$invoice_contents = file_get_contents_curl(HOME.'viewinvoice.php?id=242'); echo $invoice_contents; var_dump( $invoice_contents );
Я попытался изменить URL-адрес на внешний URL-адрес (например, http://www.google.com/ ), и страница загружается просто отлично. Я получаю домашнюю страницу Google. Но любая страница, находящаяся в том же домене, не загружается. Есть ли причина, что это произойдет?
Я не администратор сервера, но у меня есть root-доступ к серверу. Я недавно не изменил настройки, но администратор сервера, возможно, обновил версию apache или php?
В любом случае, есть ли настройка, которую я могу изменить, чтобы снова выполнить эту работу?
PS Я просто попытался сделать этот точный вызов с внешнего сервера (другой домен), и он работает нормально.
После выполнения завитка поставьте что-то вроде этого:
echo curl_getinfo($ch) . '<br/>'; echo curl_errno($ch) . '<br/>'; echo curl_error($ch) . '<br/>';
Вы увидите, что не удалось во время выполнения завитки.
Дополнительная информация: curl_getinfo curl_errno curl_error
После выполнения поместите эту переменную, чтобы проверить свои ошибки
echo "<pre>"; var_dump( curl_getinfo($ch) ) . '<br/>'; echo curl_errno($ch) . '<br/>'; echo curl_error($ch) . '<br/>';