2016-06-30 15 views
1

Ich habe kürzlich einen seltsamen Fehler beim Erstellen einer super-einfachen "Admin-Seite" für eine Website, die ich gerade mache, festgestellt. Da ich relativ neu bin, bin ich auf eine ganze Reihe von Fehlern gestoßen, habe sie aber alle behoben, bis auf einen Fehler.Warnung: fopen (FILE): Fehler beim Öffnen des Streams: Kein Fehler in CURRENT FILE

Der Teil des Codes verwendet, um eine neue Datei sieht wie folgt aus zu erstellen:

$message = '"' . $file_location . $file_name . '" successfully created.'; 
$file = fopen($file_location . $file_name, 'w+'); 
if ($file) { 
    fwrite($file, $file_content); 
    if (fwrite($file, $file_content)) { 
     fclose($file); 
    } 
    else { 
     $message = 'ERROR : File contents could not be written in "' . $file_location . $file_name . '" .'; 
    } 
} 
else { 
    $message = 'ERROR : Could not create "' . $file_location . $file_name . '" .'; 
} 

Zum Beispiel

  • $file_location/some/path/
  • könnte $file_name sein könnte file.php
  • $file_content könnte Bap a doo bap, I teach you how to buy a CANOEEE !!1
  • sein

(bitte beachten Sie, ich WAMP mit einem virtual host verwende, so ist die Verwendung von absoluten Pfaden bestimmt) Ich verstehe nicht

Aus irgendeinem Grund gab es mir den folgenden Fehlercode:

Warning: fopen(/path/to/new-file.php): failed to open stream: No such file or directory in C:\path\to\current-file.php on line XXX 

Zuerst dachte ich nur, dass dies ein weiterer meiner dummen Fehler war, aber nachdem ich den Code mehrmals überprüft und über das Problem nachgedacht hatte, konnte ich es einfach nicht herausfinden.

entschied ich mich dann nur den problematischen Code enthält eine andere Datei zu erstellen:

gab mir
<?php 
    $file_name = test.php 
    $file_location = /file/location/ 
    file = fopen($file_location . $file_name, 'w+') 
?> 

, die nur den gleichen Fehler noch ein, so habe ich beschlossen, den Code zu den absoluten Grundlagen strippen, während auch der Verwendung von include Funktion hatte ich bereits verwendet, nur um zu überprüfen, ob das noch in Betrieb war:

<?php 
    $include('file.php') 
    fopen('file.php, 'w+') 
?> 

(im Auge behalten habe ich erstellt eine andere file.php Datei im root)

Während die include Funktion funktioniert hat, bekam ich folgende Fehlermeldung, die im Grunde mich versuchen gemacht zu verlassen, das Problem zu lösen:

Warning: fopen(file.php): failed to open stream: No error in C:\path\to\file.php on line XXX 

ich alle um die WEB geschaut haben, kann aber nichts finden. Dies macht es mir grundsätzlich unmöglich, ANY FILE mit PHP zu erstellen/ändern.

+0

die erste Warnung sagt "keine solche Datei oder Verzeichnis" was bedeutet, dass der Pfad falsch ist :) – niceman

+1

Strings müssen zitiert werden, $ foo = "test.php", nicht $ foo = test.php. PHP wird wahrscheinlich auf den Systemstamm verweisen, wenn Sie "/ path/here" verwenden.Wahrscheinlich möchten Sie das DOCUMENT_ROOT des Servers, das Sie von einer Servervariablen auf vielen Servern ($ _SERVER ['DOCUMENT_ROOT']) erhalten können. –

+0

Sie 'fwrite()' zweimal auch. –

Antwort

1

Ich hatte ein sehr ähnliches Problem mit der genau gleichen Fehlermeldung.

In meinem Fall war es, weil ich versuchte, einen $ _GET-Parameter an die Datei zu senden.

Mit Includes müssen Sie keine $ _GET-Parameter senden, die Dateien werden nicht unabhängig voneinander ausgeführt, sondern das Include ist wie eine Kopie und wird in die übergeordnete Datei eingefügt. Alle Variablen, die ich brauchte, waren bereits verfügbar.