2016-03-20 13 views
1

Ich verwende dies, um eine Datei zu erfordern, wenn der Benutzer auf die Schaltfläche zum Absenden auf dem Formular klickt. Dieser Code befindet sich in der Datei blog.php. Wenn ich diese Datei im Ordner/includes/habe, funktioniert der Code einwandfrei, aber ich möchte, dass diese Datei im Stammordner ist. Als ich es im Stammordner hinzufügen, bekomme ich diesen Fehler:PHP require funktioniert nicht im Stammordner

Warning: require(../includes/addbloguser.php): failed to open stream: No such file or directory in C:\xampp\htdocs\Pentaslash\blog.php on line 27

Fatal error: require(): Failed opening required '../includes/addbloguser.php' (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\test\blog.php on line 27

<?php 
    if(isset($_POST["submit"])){ 

     require '../includes/addbloguser.php'; 
    } 
?> 
+0

Formular Aktion uRL wäre? – itzmukeshy7

+0

Sie sollten wahrscheinlich '..' aus dem Dateipfad entfernen. Denken Sie daran: Verwenden Sie immer absolute Dateipfade. –

+0

Auch wenn ich es entferne, ändert es die Fehlermeldung nicht. Ich verstehe nicht, warum das passiert, ist es wichtig, dass ich PDO verwende? – Demeteor

Antwort

0

Dies ist ein Problem, das durch die Verwendung relativer Dateipfade verursacht wird. Ihr relativer Dateipfad funktionierte, während die Datei blog.php im Ordner includes lag, weil Sie mit ../ ein Verzeichnis nach oben (in Ihr Stammverzeichnis) und dann zurück in includes gingen. Aber seit Sie die Datei um ein Verzeichnis nach oben (in Ihr Stammverzeichnis) verschoben haben, gehen Sie mit ../ ein Verzeichnis nach oben, außerhalb Ihres Stammverzeichnisses und versuchen dann, in den Ordner includes zu gehen, aber der Ordner existiert nicht im obigen Verzeichnis von deinem Wurzelverzeichnis (na ja, wenn du Glück hast, aber die Datei existiert nicht oder sie tut es, sondern die falsche).

Um dies zu vermeiden, sollten Sie immer absolute Dateipfade verwenden, so können Sie blog.php überall verschieben, solange Ihre Datei addbloguser.php am selben Ort bleibt.

Eine einfache Möglichkeit, den absoluten Dateipfad zu Ihrem Projekt zu erhalten, besteht darin, eine Konstante zu definieren, die dirname(__FILE__)) in einer globalen Datei im Stammverzeichnis Ihres Projekts auswertet. Auf diese Weise können Sie die Konstante immer verwenden, um mit Dateien zu arbeiten und Dateien zu ändern, um relative Dateipfade zu korrigieren, wenn Sie etwas ändern.

z. global.php ist in Ihrem Root-Verzeichnis, dann werden Sie ihn nur

define('IN_DIR', dirname(__FILE__)); //__FILE__ is a magic constant and includes the absolute filepath to the current file -> global.php 

schreiben Und wenn Sie nun auch in blog.php die Datei global.php (oder umgekehrt), die Sie für Ihre Dateipfade verwenden können, die definierte Konstante, und es wird aussehen wie diese

require IN_DIR.'/path/to/file.php' 

In diesem Fall, dass

require IN_DIR.'/includes/addbloguser.php' 
+0

ohh das hat noch besser funktioniert, danke al ot – Demeteor

0

nach Ihren Kommentar, es sollte nicht sein:

require './addbloguser.php'; 

Versuchen Sie es mit

require __DIR__ . '/addbloguser.php'; 

oder

require dirname(__FILE__) . '/addbloguser.php'; 

so können Sie bessere Fehlermeldungen erhalten und sehen, was fehlt.