Подтвердить что ты не робот

Что может заставить curl возвращать false при попытке доступа к локальному файлу?

Этот сайт работает уже несколько месяцев и работает отлично. У меня есть страница 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?

В любом случае, есть ли параметр, который я могу изменить, чтобы снова выполнить эту работу?

P.S. Я просто попытался сделать этот точный вызов с внешнего сервера (другой домен), и он работает нормально.

4b9b3361

Ответ 1

После выполнения curl поставьте что-то вроде этого:

echo curl_getinfo($ch) . '<br/>';
echo curl_errno($ch) . '<br/>';
echo curl_error($ch) . '<br/>';

Вы увидите, что не удалось выполнить во время выполнения завитки.

Дополнительная информация: curl_getinfo curl_errno curl_error

Ответ 2

После выполнения поместите эту переменную для проверки своих ошибок

echo "<pre>";
var_dump( curl_getinfo($ch) ) . '<br/>';
echo curl_errno($ch) . '<br/>';
echo curl_error($ch) . '<br/>';