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

Конфигурация сервера: allow_url_fopen = 0 в

При запуске script появляется следующая ошибка. Сообщение об ошибке выглядит следующим образом:

Предупреждение: file_get_contents() [function.file-get-contents]: https://оболочка отключена в конфигурации сервера allow_url_fopen = 0 в /home/satoship/public _html/connect.php в строке 22

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

4b9b3361

Ответ 1

Если у вас нет возможности изменить файл php.ini, используйте cURL: PHP Curl And Cookies

Вот пример, который я создал:

function get_web_page( $url, $cookiesIn = '' ){
        $options = array(
            CURLOPT_RETURNTRANSFER => true,     // return web page
            CURLOPT_HEADER         => true,     //return headers in addition to content
            CURLOPT_FOLLOWLOCATION => true,     // follow redirects
            CURLOPT_ENCODING       => "",       // handle all encodings
            CURLOPT_AUTOREFERER    => true,     // set referer on redirect
            CURLOPT_CONNECTTIMEOUT => 120,      // timeout on connect
            CURLOPT_TIMEOUT        => 120,      // timeout on response
            CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects
            CURLINFO_HEADER_OUT    => true,
            CURLOPT_SSL_VERIFYPEER => true,     // Validate SSL Cert
            CURLOPT_HTTP_VERSION   => CURL_HTTP_VERSION_1_1,
            CURLOPT_COOKIE         => $cookiesIn
        );

        $ch      = curl_init( $url );
        curl_setopt_array( $ch, $options );
        $rough_content = curl_exec( $ch );
        $err     = curl_errno( $ch );
        $errmsg  = curl_error( $ch );
        $header  = curl_getinfo( $ch );
        curl_close( $ch );

        $header_content = substr($rough_content, 0, $header['header_size']);
        $body_content = trim(str_replace($header_content, '', $rough_content));
        $pattern = "#Set-Cookie:\\s+(?<cookie>[^=]+=[^;]+)#m"; 
        preg_match_all($pattern, $header_content, $matches); 
        $cookiesOut = implode("; ", $matches['cookie']);

        $header['errno']   = $err;
        $header['errmsg']  = $errmsg;
        $header['headers']  = $header_content;
        $header['content'] = $body_content;
        $header['cookies'] = $cookiesOut;
    return $header;
}

ПРИМЕЧАНИЕ. При повторном просмотре этой функции я заметил, что я отключил проверки SSL в этом коде. Это, как правило, ПЛОХАЯ вещь, хотя в моем конкретном случае сайт, который я использовал, был локальным и был безопасным. В результате я изменил этот код, чтобы проверить SSL по умолчанию. Если по какой-то причине вам нужно изменить это, вы можете просто обновить значение для CURLOPT_SSL_VERIFYPEER, но я хотел, чтобы код был защищен по умолчанию, если кто-то использует это.

Ответ 2

@blytung Имеет хорошую функцию для замены этой функции

<?php
$url = "http://www.example.org/";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$contents = curl_exec($ch);
if (curl_errno($ch)) {
  echo curl_error($ch);
  echo "\n<br />";
  $contents = '';
} else {
  curl_close($ch);
}

if (!is_string($contents) || !strlen($contents)) {
echo "Failed to get contents.";
$contents = '';
}

echo $contents;
?>    

Ответ 3

Используйте этот код в php script (первые строки)

ini_set('allow_url_fopen',1);

Ответ 4

Измените свой php.ini, найдите allow_url_fopen и установите его allow_url_fopen = 1

Ответ 5

ЭТО ОЧЕНЬ ПРОСТАЯ ПРОБЛЕМА

Вот лучший способ решения этой проблемы.

Шаг 1: Войдите в свой cPanel (http://website.com/cpanel ИЛИ http://cpanel.website.com).

Шаг 2: ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ → Выберите версию PHP

Шаг 3: измените вашу текущую версию PHP: 5.6

Шаг 3: HIT "Установить как текущий" [ENJOY]