file_get_contents не работает? - PullRequest
       47

file_get_contents не работает?

15 голосов
/ 17 октября 2011

Этот код не работает на сервере.Но он работает для моего локального хоста (xampp)

<code>$url = file_get_contents('http://www.site.com/');
$xhtml='|<tr style="background-color:#dddddd;">
        <td class="odd" align="left">(.+?)</td><td class="odd">(.+?)</td>
    </tr>|i';
preg_match_all($xhtml,$url,$score);
array_shift($score);
echo"<pre>";
print_r($score);
echo"
";

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

$xhtml='|<td class="odd" align="left">(.+?)</td><td class="odd">(.+?)</td>|i';

Мне нужно принять эти два значения между кодами.

allow_url_fopen = on

Ответы [ 6 ]

26 голосов
/ 12 июля 2014

Попробуйте эту функцию вместо file_get_contents ():

<?php

function curl_get_contents($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;
}

Может использоваться как file_get_contents (), но использует cURL.

Установить cURL в Ubuntu (или другой Unix-подобной операционной системе с aptitude):

sudo apt-get install php5-curl
sudo /etc/init.d/apache2 restart

См. Также cURL

19 голосов
/ 17 октября 2011

Вам нужно разрешить

 allow_url_fopen

в вашем файле конфигурации php.ini.Некоторые хосты запрещают это для безопасности

10 голосов
/ 11 мая 2013

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

Как сказано выше:

Вам нужно:

разрешить открытие URL Разрешить URL включают

Если вы используете CURL, вам нужно расширение curl

Если вы file_get_contents https: // Я полагаю, вам также нужен модуль apache ssl, а также расширение openssl php.

Без OpenSSL и модуля SSL, выполняющих file_get_contents на графике facebook (очевидно, https://) он вернул ошибку «Файл не найден».

2 голосов
/ 26 декабря 2012

Также проверьте, есть ли у вас: allow_url_include On

и убедитесь, что нет проблем с сетевым разрешением, таких как 403 Forbidden .

0 голосов
/ 09 ноября 2018

Если allow_url_fopen равно On, отключите брандмауэр или csf и проверьте снова.

0 голосов
/ 09 марта 2018

У нас была эта проблема, и она оказалась чем-то необычным. Мы пытались file_get_contents ('https://www.google.com'); проблема для нас заключалась в том, что сервер был настроен на использование ipv6, но на него не был назначен ipv6 ip. Мы отключили ipv6, и он использовал ipv4, и это сработало. Просто еще одна вещь на список для проверки.

...