Problem mit [function:file]:failed to open stream

MelcomB56

Mitglied
Hallo liebe Community,

ich habe ein problem was mich langsam verzweifeln lässt.

Habe ein webportal geschrieben welches im Internet ohne weitere probleme läuft. Nun muss ich das portal in ein Intranet bringen.

Habe das portal hochgeladen und angepasst (pfade und so weiter). An sich geht alles bis auf eins

Folgender Code zum problemscript tour.plan.do.php:
PHP:
$content = implode("", file("intra.domain.loc/tourenplaner/tour.plan.php?datum=".$date."&mandant=".$filiale.""));
$fh = fopen("../admin/Tourenplaner/tourlisten/tour.liste.".$date.".F".$filiale.".html", "w");
fputs($fh, $content);
fclose($fh);

wenn ich dieses script aufrufe, kommt folgende fehlermeldung:
Code:
Warning: file(intra.domain.loc/tourenplaner/tour.plan.php?datum=2009-06-23&mandant=1) [function.file]: failed to open stream: No such file or directory in /srv/www/web1/html/ezport/tourenplaner/tour.plan.do.php on line 32
wenn ich aber das was hinter file kommt in den browser eingebe kommt genau das was kommen soll, also ist dieses file da.

Kann mir da bitte jemand einen tipp geben woran das liegen kann ?
Brauche da echt hilfe....:(
 
Zuletzt bearbeitet:
Ich würde sagen die Datei heißt einfach nur: intra.domain.loc/tourenplaner/tour.plan.php

Ohne irgendwelche _GET - Parameter.
 
Hallo,

erstell mal ein Script, in dem folgender Inhalt steht:

PHP:
echo ini_get('allow_fopen_url');

EDIT: Ok, asipak4you hat wohl eher recht ;-)
 
Zuletzt bearbeitet:
Hi Saftmeister,

also habe das script erstellt:

PHP:
<?
echo ini_get('allow_fopen_url');  
?>

wenn ich das aufrufe, kommt nix.

@asipak4you

Aber warum geht das dann im Internet so aber im Intranet nicht ?
 
Zuletzt bearbeitet:
Hallo,

wenn du
Code:
intra.domain.loc/tourenplaner/tour.plan.php?datum=2009-06-23&mandant=1
in den Browser eingibst, werden die _GET - Parameter ja vom Parser ausgewertet und im Script verwendet!

file() liest aber nur den Text (Code) innerhalb deiner Datei ein, da wird nichts geparst, sprich ein
Code:
echo 'Hallo';
bleibt ein echo 'Hallo'; . Das Script kann deshalb erstens nichts mit den Parametern anfangen und zweitens deutet file() diese "Anhängsel" als Teil des Dateinamens!
 
@MelcomB56: Dann aktiviere, oder lass es vom Administrator tun, allow_fopen_url in der php.ini.

@asipak4you: Ganz so richtig ist das nicht. Man kann mittels fopen auch URLs öffnen. In dem Falle sollte, weil der Webserver so konfiguriert ist, das PHP-Script erst geparst und die Ausgabe dann an den Client (in diesem Falle auch ein Webserver) gesendet werden.

Nochmal @MelcomB56: Ich vermute, es funktioniert, wenn du statt der Intranet-URL die Internet-URL verwendest? Also im Intranet die URL im Internet öffnen... Wenn das tatsächlich so ist, dann lass, wie schon erwähnt, allow_fopen_url aktivieren oder tu es selbst. Das ist dann aber auch ein Sicherheitsrisiko. Sei dir darüber im Klaren.
 
Ich vermute, es funktioniert, wenn du statt der Intranet-URL die Internet-URL verwendest? Also im Intranet die URL im Internet öffnen... Wenn das tatsächlich so ist, dann lass, wie schon erwähnt, allow_fopen_url aktivieren oder tu es selbst. Das ist dann aber auch ein Sicherheitsrisiko. Sei dir darüber im Klaren.

Es darf auch ruhig eine Intranet-URL sein ala 192.xxx.xxx.x z.B.
Hauptsache es ist überhaupt eine URL mit entsprechendem Schema (hier wohl http) vorangestellt und kein Dateisystempfad, wie oben. Sonst kann PHP ja nicht erkennen, dass es an dieser Stelle einen HTTP-Request absetzen muss. ;)

Details gibt's unter [phpf]fopen[/phpf].

LG
 
Hi alle und danke für die vielen antworten.

Habe mal in der php.ini geschaut. Da ist allow_fopen_url = on

-> Hat keine abhilfe gebracht.

Ich habe so die vermutung das es evtl. am vhost vom webserver liegen kann ?
Deswegen habe ich nun einfach mal einen Windows-Web-Server (Xampp) aufgesetzt ohne vhost. Habe die ganze geschichte nun da aufgespielt und eingestellt, und siehe da, es läuft so wie es soll.

Irgendwie ist das alles verhext. Bin kurz davor nen WindowsWebServer zu nehmen *bibber*

:mad::confused:
 
Hi,

Habe die ganze geschichte nun da aufgespielt und eingestellt, und siehe da, es läuft so wie es soll.

Was heißt bei Dir eingestellt? Pfade geändert? In was?

Nochmal:
Wenn die Datei, die Du da per file() einlesen willst, ein PHP-Script ist, dass ausgeführt werden soll, musst Du auch über den Webserver gehen:

PHP:
file_get_contents('http://server-ip/pfad/zum/script.php?param1=wert1&param2=wert2');

Wenn Du das so machst,
PHP:
file_get_contents('/pfad/zum/script.php?param1=wert1&param2=wert2');

sucht PHP in /pfad/zum/ die Datei namens "script.php?param1=wert1&param2=wert2" und findet natürlich nichts.

Ein
PHP:
file_get_contents('/pfad/zum/script.php');

liefert Dir dementsprechend den Quelltext von script.php.

LG
 
Zurück