PHP: “file_get_contents()” retourner NULL à partir du contenu vérifié URL
Je parie que ça va finir par être quelque chose de simple ... mais je peux utiliser une main dans le repérage de l'.
Problème:
Lorsque j'essaie d'obtenir le contenu d'un local spécifique d'URL via file_get_contents()
, il revient comme une chaîne vide " (length=0).
Ce que j'ai essayé:
$url = 'http://localhost/bbq/index.php/company/get/id/2131/return/json';
$results = file_get_contents($url);
echo'<pre>Results:<br />',var_export($results),'</pre>';
Quand il s'agit de la visite de http://localhost/bbq/index.php/company/get/id/2131/return/json
, tout echos magnifiquement: {"id":"2131","value":"Acme Anvil Corp."}
De vérifier moi-même, je l'ai essayé avec $url = 'http://www.google.com'
, et il a fonctionné comme prévu alors j'ai essayé un Local séparé uri, http://localhost/?phpinfo=1
, et il également travaillé l'amende juste.
Question:
Ce qui me manque???
[PLUS D'INFOS]
allow_url_fopen
est SUR
Je peut viens de trouver quelque chose.
Comme une mesure de sécurité dans CODEIGNITER projets de, la première ligne du script du contrôleur a:
if ( !defined('BASEPATH')) exit('No direct script access allowed');
En commentant ne fournit pas toutes les améliorations, mais je pense qu'il peut être utile de mentionner néanmoins.
Aussi, voici un dump de la Tête de Réponse HTTP. Peut-être que quelqu'un peut voir quelque chose là-bas. Tout cela semble assez simple pour moi, mais je ne sais pas vraiment ce que je devrais être à la recherche pour.
array (size=13)
0 => string 'HTTP/1.1 200 OK' (length=15)
1 => string 'Date: Thu, 27 Dec 2012 19:58:47 GMT' (length=35)
2 => string 'Server: Apache/2.4.2 (Win64) PHP/5.4.3' (length=38)
3 => string 'X-Powered-By: PHP/5.4.3' (length=23)
4 => string 'Set-Cookie: csrf_cookie_name=4ae46f9a7e612ae22a080a4e88bd349c; expires=Thu, 27-Dec-2012 21:58:47 GMT; path=/' (length=108)
5 => string 'Set-Cookie: PHPSESSID=ah70p0ldl5qptcauei1t8ihud3; path=/' (length=56)
6 => string 'Expires: Thu, 19 Nov 1981 08:52:00 GMT' (length=38)
7 => string 'Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0' (length=77)
8 => string 'Pragma: no-cache' (length=16)
9 => string 'Refresh: 0;url=http://localhost/bbq/index.php/index.php/user/login' (length=66)
10 => string 'Content-Length: 0' (length=17)
11 => string 'Connection: close' (length=17)
12 => string 'Content-Type: text/html' (length=23)
[/PLUS D'INFO]
BTW, je suis en cours d'exécution:
- WAMPSERVER sur Win7 64
- Apache 2.4.2
- PHP 5.4.3
- CodeIgniter 2.1.2
print_r($http_response_header);
pourrait vous donner un indice quant à pourquoi il ne répond pasEst le
allow_url_fopen
paramètre activé?cela fonctionne si vous remplacer "localhost" par l'adresse 127.0.0.1?
Saisir les pailles ici, mais essayer d'ajouter /? pour l'URL d'origine.
Qu'est-ce exactement est de retour???? Exactement? Vide n'est pas valide PHP valeur. Est-il
FALSE
? Est-il vraiment NULL
? Quel est-il? Ce n' var_dump
dire à ce sujet? Pourquoi ne pas vous fournir la sortie de débogage vous recueillir directement à votre question?OriginalL'auteur mOrloff | 2012-12-27
Vous devez vous connecter pour publier un commentaire.
Commencer à déboguer:
Une demande pour le fichier doit maintenant au moins vous redonner du texte de sortie en raison de la
var_dump
. Vous pouvez également ajouter un marqueur de sortie au début au-dessous de l'en-tête d'appel, il est donc clair que le script a été appelé et il a commencé à courir.Cependant une meilleure variante est à l'aide d'un step-débogueur et la création d'une session de débogage avec des points d'arrêt. Je recommande Xdebug.
Pensez-vous à la Rubrique 9 de que de vidage, l'Actualisation de la page de connexion, pourrait être de la partie? Aussi, j'ai remarqué que l'adresse sur l'élément en question a un deux "index.php"s dans une rangée. Quoi?? De toute façon, je m'attends à obtenir une sorte de/ / erreur/avis d'avertissement, mais ......
Vous avez un bon nez! Article 9 ressemble le coupable, qui est un non-standard de redirection ne fait pas partie du protocole HTTP. Donc PHP ne pas la suivre. Voir stackoverflow.com/questions/283752/refresh-http-header - Aussi envisager d'utiliser le
Location
en-tête de réponse au lieu de cela, c'est la bonne. Ou utiliser à la fois dans le cas où vous avez besoin d'avoirRefresh
. Aussi l'esprit de la renvoyer le code d'état (!), une redirection n'est normalement pas 200 mais 302 ou 301.OriginalL'auteur hakre
Je vois que c'est un vieux post, mais j'ai eu un problème similaire aujourd'hui avec file_get_contents() à l'aide d'un parent chemin d'accès au fichier et retourne une chaîne vide.
- Je utiliser l'encodage UTF-8 sur tous mes fichiers, et j'ai trouvé que j'ai oublié de changer l'encodage d'un fichier (que je ne pouvais pas retrive par file_get_contents() ). Quand j'ai changé l'encodage "comme par magie" travaillé.
Thre problème a été coused par les caractères non ANSI dans un fichier encodé en ANSI (par exemple.: á,é,û,ő).
Espère que cela aide quelqu'un!
OriginalL'auteur hattila
Vérifier est-il activé dans votre php.ini
OriginalL'auteur Rush