2017-06-09 4 views
1

Also folgte ich einem PHP OOP Tutorial auf YouTube, die gut war, habe mir den Code, den ich brauchte, aber jetzt versuche ich es in meine Website zu implementieren, und ich habe ein bisschen eines Fehlerproblems.Ordner Pfad Probleme, wenn Dateien erforderlich

Hier ist meine Ordnerstruktur, so dass Sie sehen können, was los ist. Der Stammordner 'modelawiki' befindet sich in meinem 'htdocs' Ordner innerhalb eines XAMPP Localhost Servers. Ich habe andere Sites in anderen Ordnern innerhalb meines 'htdocs' Ordners. http://imgur.com/a/vs0qt

In meiner index.php In meinem Stammordner (modelawiki), ich bin erfordert meine 'Kern/init.php' Datei mit dem folgenden Code:

require_once 'core/init.php'; 

, die gerade fein ausgeführt wird. Aber wenn ich in meine 'admin' Ordner zu verschieben und versuchen, auszuführen:

require_once '../core/init.php'; 

Ich komme mit dem folgenden Fehler auf:

Warning: require_once(functions/sanitize.php): failed to open stream: No such file or directory in /Applications/XAMPP/xamppfiles/htdocs/modelawiki/core/init.php on line 31

Fatal error: require_once(): Failed opening required 'functions/sanitize.php' (include_path='.:/Applications/XAMPP/xamppfiles/lib/php') in /Applications/XAMPP/xamppfiles/htdocs/modelawiki/core/init.php on line 31

Heres meinen 'Kern/init.php' Code:

// Auto Load Classes 
spl_autoload_register(function($class) { 
    require_once 'classes/' . $class . '.php'; 
}); 

// Load Functions 
require_once 'functions/sanitize.php'; 

Wie würde ich beheben dieses Problem in meinem ‚Kern/init.php‘ Datei der Lage sein, aus dem Stammordner zu laden und alle tieferen Ordner in meinem Ordner-Struktur? Ich muss auch sicherstellen, dass, sobald ich diese auf meinem Network Solutions FTP-Server hochladen, dass es auch ausgeführt wird.

+0

wo befindet sich Dateikern/init.php auf deinem Server (vollständiger Pfad)? –

+0

/htdocs/modelawiki/core/init.php –

+0

und haben Sie einen Ordner Funktionen mit sanitize.php darin in Ihrem Projekt Stammpfad? –

Antwort

1

könnten Sie absolute Pfade verwenden statt:

  1. get-Verzeichnis von root in Ihrem Klassenlader

    // if called in core/init.php 
    // the following will be the absolute path of whatever folder core is in 
    $rootdir = dirname(dirname(__FILE__)); 
    
  2. so von dort kann man so etwas wie dieses haben werden:

    $rootdir = dirname(dirname(__FILE__)); 
    
    // Auto Load Classes 
    spl_autoload_register(function($class) { 
        require_once $rootdir . 'classes/' . $class . '.php'; 
    }); 
    
    // Load Functions 
    require_once $rootdir . 'functions/sanitize.php';  
    
+0

Vielleicht möchten Sie ein zusätzliches '/' hinzufügen Ich bin nicht sicher, ob dirname angehängt wird oder nicht – user7984880

0

Ich denke, Sie sollten init.php Datei wie folgt ändern. Sie müssen den Pfad korrekt angeben.

require_once '../functions/sanitize.php';