web-dev-qa-db-fra.com

file_get_contents ne fonctionne pas?

Ce code ne fonctionne pas sur le serveur. Mais cela fonctionne à mon localhost (xampp)

$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"</pre>";

Il imprime d'autres partitions lorsque je modifie le code de cette manière Parce qu'il y a deux rangées comme celle-ci. Il a les mêmes codes. en passant, le code fonctionne sur le serveur.

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

Je dois prendre ces deux valeurs entre le code.

allow_url_fopen = on
14
Venom

Essayez cette fonction à la place de 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;
}

Il peut être utilisé comme file_get_contents (), mais utilise cURL.

Installez cURL sur Ubuntu (ou un autre système d'exploitation de type Unix avec aptitude):

Sudo apt-get install php5-curl
Sudo /etc/init.d/Apache2 restart

Voir aussi cURL

26
Adelmar

Vous devez autoriser

 allow_url_fopen

dans votre fichier de configuration php.ini. Certains hôtes l'interdisent pour des raisons de sécurité

19
genesis

Je sais que ce sujet est ancien, mais je devais le découvrir moi-même et comprendre que cela aiderait quelqu'un plus tard.

Comme dit ci-dessus:

Vous avez besoin:

permettre l'url fopen permettre l'url inclure

Si vous utilisez CURL, vous avez besoin d'une extension Curl

Si vous êtes file_get_contents d'un https: // je crois que vous avez également besoin du module Apache ssl, ainsi que de l'extension openssl php.

Sans OpenSSL et le module SSL effectuant un fichier_get_contents sur un graphique facebook (évidemment, https: //), l'erreur "Aucun fichier trouvé" n'a été renvoyée.

10
David Lawrence

Vérifiez également si vous avez: allow_url_include On

Et assurez-vous qu'il n'y a pas de problèmes d'autorisation de réseau tels que 403 Forbidden .

2
shasi kanth

Si allow_url_fopen est On, désactivez votrefirewalloucsfet vérifiez à nouveau.

0
afshin

Nous avons eu ce problème et il s'est avéré être quelque chose d'inhabituel. Nous essayions de file_get_contents (' https://www.google.com '); Le problème pour nous était dû au fait que le serveur était configuré pour utiliser ipv6, mais aucune adresse IP ipv6 ne lui était attribuée. Nous avons désactivé ipv6 et l'avons utilisé avec ipv4 et cela a fonctionné. Juste une autre chose sur la liste à vérifier.

0
henry