PHP: "file_get_contents()" NULL zurückgeben von content-URL verifiziert
Bin ich Wetten, dass es dann am Ende wird etwas einfacher ... aber ich kann mit einer hand in spotting es.
Problem:
Wenn ich versuche, den Inhalt eines bestimmten lokalen URL über file_get_contents()
, es kommt zurück als leeren string " (length=0).
, Was ich versucht habe:
$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>';
Wenn Sie direkt besuchen http://localhost/bbq/index.php/company/get/id/2131/return/json
alles echos schön: {"id":"2131","value":"Acme Anvil Corp."}
Check mich aus, ich versuchte es mit $url = 'http://www.google.com'
, und es funktionierte wie erwartet so dann habe ich versucht, eine separate Lokale uri http://localhost/?phpinfo=1
, und es arbeitete auch gut.
Frage:
Was bin ich???
[ZUSÄTZLICHE INFO]
allow_url_fopen
ist AUF
Ich kann gefunden haben etwas.
Als Sicherheitsmaßnahme in CODEIGNITER-Projekte, die erste Zeile der controller-Skript hat:
if ( !defined('BASEPATH')) exit('No direct script access allowed');
Kommentieren Sie es aus nicht alle Verbesserungen, aber ich dachte, es kann sein, erwähnenswert, dennoch.
Auch hier ist ein dump der HTTP-Antwort-Header. Vielleicht hat jemand etwas sehen können. Es scheint alles ziemlich geradlinig zu mir, aber ich weiß nicht wirklich, was ich gesucht werden soll.
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)
[/ADDITIONAL INFO]
BTW, ich bin mit:
- WAMPSERVER auf Win7 64
- Apache 2.4.2
- PHP 5.4.3
- CodeIgniter 2.1.2
print_r($http_response_header);
könnte Ihnen eine Ahnung, warum es nicht reagiertIst die
allow_url_fopen
Einstellung aktiviert?funktioniert es, wenn Sie ersetzen Sie "localhost" mit 127.0.0.1?
Greifen nach Strohhalmen hier, aber versuchen Sie,/? zu deiner ursprünglichen URL.
Was genau zurückgegeben wird???? Genau? Leer ist kein Gültiger PHP-Wert. Ist es
FALSE
? Ist es wirklich NULL
? Was ist es? Was bedeutet var_dump
dazu sagen? Warum nicht geben Sie die debug-Ausgabe, die Sie sammeln direkt mit deiner Frage?
InformationsquelleAutor mOrloff | 2012-12-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Debuggen starten nun so aus:
Eine Anfrage an die Datei muss nun mindestens Ihnen wieder einige text-Ausgabe, weil der
var_dump
. Sie können auch hinzufügen, einige marker-Ausgang am Anfang unter dem header-Aufruf, so ist es klar, dass das Skript aufgerufen wurde, und es hat angefangen zu laufen.Jedoch eine bessere Variante ist die Verwendung eines step-debugger und die Erstellung einer debugging-Sitzung mit den breakpoints. Ich empfehle Xdebug.
Denken Sie, Artikel 9 der dump, der auf Aktualisieren, um die login-Seite, ein Teil davon sein konnte? Auch ich bin zu bemerken, dass die Adresse auf das Element ein beiden "index.php"s in einer Zeile. Was?? Trotzdem, ich würde erwarten, dass immer irgendeine Art von Fehler/Hinweise/Warnung, aber ......
Sie haben eine gute Nase! Artikel 9 sieht aus wie der Täter, dass ein nicht-standard-Umleitung nicht Teil der HTTP-standard. Also PHP nicht Folgen. Siehe stackoverflow.com/questions/283752/refresh-http-header - Auch in Betracht ziehen, verwenden Sie das
Location
- response-headers statt, das ist richtig. Oder verwenden Sie beide, wenn Sie benötigen, umRefresh
als gut. Auch Verstand die Rückkehr status-code (!), eine Umleitung ist in der Regel nicht 200 sondern 302 oder 301.InformationsquelleAutor hakre
Ich kann sehen, dies ist eine alte post, aber ich hatte ein ähnliches Problem heute mit file_get_contents() mit einem relativen Pfad der Datei, die Rückgabe ein leerer string.
Verwende ich UTF-8-Codierung, die auf alle meine Dateien und ich fand, dass ich vergaß, um die Codierung ändern auf eine Datei (die ich, konnte nicht ermittelt werden über file_get_contents() ). Wenn ich änderte die Codierung es "magisch" gearbeitet.
Thre problem war mitgenutzt durch die nicht-ANSI-Zeichen in eine ANSI-codierte Datei (zB.: á,é,ű,ő).
Hoffe, das jemand hilft!
InformationsquelleAutor hattila
Überprüfen, ist es aktiviert in der php.ini
InformationsquelleAutor Rush