file_get_contents(url) : échec de l’ouverture du flux

la programmation


Bonjour à tous;

J’ai un fichier php qui récupère le contenu d’une URL, je reçois le message d’échec

Warning: file_get_contents(http://xxxxxx): failed to open stream: HTTP request failed! in xxxx.php on line xx

j’ai essayé tellement de solutions en ligne mais ça ne fonctionne toujours pas. voici le code

$cryptpass = rawurlencode(crypt($pc['pcpassword']));
$url = "http://" . $pc['pcname']."/Reports/ReportList.php?&username={$pc['pcusername']}&cryptpass=$cryptpass&noredir=1";
$parsed_list = read_general_list($url, false);
C#
function read_general_list($url, $make_assoc = false)
    {
        $compressed_data = file_get_contents($url);
    }

$compressed_data est toujours nul et génère une erreur :

Avertissement : file_get_contents(http://xxxxxx) : échec de l’ouverture du flux : échec de la requête HTTP ! dans xxxx.php en ligne xx

Des suggestions s’il vous plaît?

Solution 1

Comme l’indique le message d’erreur, le flux (URL) demandé ne peut pas être ouvert. Il y a plusieurs raisons possibles à cela :
1. L’URL de base est mauvaise. $pc['pcname']

2. Le nom d’utilisateur et/ou le mot de passe sont incorrects
3. Le nom d’utilisateur/mot de passe n’a pas d’autorisation sur le serveur
4. Votre système ne parvient pas à atteindre le serveur (firewall, autorisations PHP, …)
4. …

J’utiliserais la stratégie suivante pour déboguer :
1. Videz $url et notez-le.
2. Utilisez un navigateur avec des outils de débogage (par exemple Firefox/Firebug) et essayez d’accéder à cette URL.
3. Examinez les en-têtes renvoyés pour voir quelle erreur le serveur signale (le cas échéant).
4. Réfléchissez à la raison pour laquelle cette erreur est renvoyée…

Acclamations,
Pierre

Si cela répond à votre question, votez et marquez-la comme acceptée.

Solution 2

Je suis désolé, je n’ai jamais mis à jour complètement cette question. Peut-être si quelqu’un cherche encore une réponse.

Cela a fonctionné pour moi. Il s’agit de la fonction équivalente à File_get_contents, mais peut gérer une grande quantité de données. J’ai trouvé cette solution en ligne.

function file_get_contents_curl($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Set curl to return the data instead of printing it to the browser.
curl_setopt($ch, CURLOPT_URL, $url);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}

コメント

タイトルとURLをコピーしました