Извлечение URL-адреса через CURL в PHP приводит к появлению страницы с ошибкой Plesk

У меня странная проблема, которая может быть связана или не связана с Plesk. Этот PHP-скрипт предназначен для получения страницы на том же сервере при выполнении в том же домене, например. http://quotationsbook.com/sometestpage.php

<?php
error_reporting('E_ALL');
ini_set('display_errors', 1);
function curlFileGetContents($urlreq) {
    $ch = curl_init();
    $timeout = 5;
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_MAXREDIRS, 50);
    curl_setopt($ch, CURLOPT_URL, $urlreq);
    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    $request_result = curl_exec($ch);
    if (curl_errno($ch))
        $response = 0;
    else
        $response = $request_result;
    curl_close($ch);
    return $response;
    }
$url = 'http://quotationsbook.com';
$data = curlFileGetContents($url);
echo '<pre>';
print_r($data);
echo '</pre>';
?>

Однако он не извлекает запрошенную страницу, он всегда извлекает страницу с ошибкой Plesk.

Что касается PHP-переменной allow_url_fopen, для нее установлено значение On.

Проблема возникает только для того же домена, где размещен код, но не для других доменов. то есть это происходит только на http://quotationsbook.com, где то, что я пытаюсь получить, находится под http://quotationsbook.com/*, это не происходит, когда я пытаюсь получить, скажем, http://google.com


person Amit Kothari    schedule 18.03.2014    source источник
comment
Что написано на странице ошибки?   -  person Rob W    schedule 18.03.2014
comment
Вот что я вижу, когда скручиваю quotationsbook.com выше: chopapp.com/#vro2vmck   -  person Amit Kothari    schedule 18.03.2014


Ответы (1)


Ответ на ваш вопрос на самом деле в вашем последнем абзаце.

Проблема возникает только для того же домена, где размещен код, но не для других доменов. то есть это происходит только на http://quotationsbook.com, где то, что я пытаюсь получить, находится под http://quotationsbook.com/*, это не происходит, когда я пытаюсь получить, скажем, http://google.com

Это ваша подсказка.

Я должен задать вопрос, а зачем использовать CURL, если вы находитесь на том же сервере? Что вы пытаетесь достичь? Вероятно, есть лучшие решения, чем использование CURL.

Предполагая, что вам нужно использовать CURL, скорее всего, это брандмауэр или другая проблема безопасности. Убедитесь, что порт, к которому осуществляется доступ, открыт и не заблокирован.

См. PHP Curl не работает на локальном хосте?

person Frank V    schedule 18.03.2014