Frage

Ich kann den PHP-Include-Pfad im festlegen php.ini:

include_path = /path/to/site/includes/

Aber dann sind auch andere Websites betroffen, das ist also nicht gut.

Ich kann das PHP-Include am Anfang jeder Datei festlegen:

$path = '/path/to/site/includes/';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);

Aber das scheint eine schlechte Praxis zu sein und führt zu Unordnung.

Also kann ich daraus ein Include machen und es dann in jede Datei einbinden:

include 'includes/config.php';

oder

include '../includes/config.php';

Das ist es, was ich gerade mache, aber der Include-Pfad von config.php ändert sich je nachdem, was darin enthalten ist.

Gibt es einen besseren Weg?Ist es wichtig?

War es hilfreich?

Lösung

Wenn Sie Apache als Webserver verwenden, können Sie die Einstellungen mit überschreiben (sofern Sie dies zulassen). .htaccess Dateien.Sehen das PHP-Handbuch für Details.

Grundsätzlich legen Sie eine Datei mit dem Namen ab .htaccess im Stammverzeichnis Ihrer Website, das etwas PHP enthält ini Werte.Vorausgesetzt, Sie haben Apache so konfiguriert, dass Überschreibungen zulässig sind, verwendet diese Site alle Werte in Ihrer PHP-Konfiguration sowie die Werte, die Sie in angeben .htaccess Datei.

Kann nur mit verwendet werden PHP_INI_ALL Und PHP_INI_PERDIR Typanweisungen

wie auf der von mir verlinkten Seite angegeben.Wenn Sie zur vollständigen Liste klicken, sehen Sie, dass der Include-Pfad a ist PHP_INI_ALL Richtlinie.

Andere Tipps

Erik Van Brakel gab meiner Meinung nach eine der besten Antworten.

Wenn Sie Apache- und virtuelle Hosts verwenden, können Sie außerdem Includes direkt darin einrichten.Mit dieser Methode müssen Sie nicht daran denken, php_admin-Befehle in Ihrer .htaccess-Datei zu belassen.

Benutze einen php.ini Datei auf der Website Wurzel, wenn Ihr Setup verwendet PHP als CGI (der häufigste Fall auf gemeinsam genutzten Hosts) mit derselben Syntax wie serverweit php.ini;lege es hinein .htaccess wenn Sie PHP als Apache-Modul haben (führen Sie a phpinfo() falls unsicher):

php_value include_path "wherever"

Beachten Sie, dass pro Ordner php.ini does nicht beeinflusst Unterordner.

Warum ist das Anhängen an den Include-Pfad Ihrer Meinung nach eine schlechte Praxis?

Dieser Code oben im Root-Skript sollte nicht so schlecht sein ...

$path = '/path/to/site/includes/';
set_include_path($path . PATH_SEPARATOR . get_include_path());

Meiner Meinung nach besteht der Hauptvorteil darin, dass es portabel und nicht nur mit Apache kompatibel ist

BEARBEITEN:Ich habe einen Nachteil dieser Methode gesehen:geringe Auswirkungen auf die Leistung.sehen http://www.geeksengine.com/article/php-include-path.html

Je nachdem, wie Ihr Host eingerichtet ist, ist es Ihnen möglicherweise gestattet, einen zu platzieren php.ini Datei im Stammverzeichnis Ihres Home-Verzeichnisses mit zusätzlichen Konfigurationsanweisungen.

Ihre Anwendung sollte über eine in PHP geschriebene Konfigurationsdatei verfügen.Fügen Sie das dann mit einer relativen Seite in jede Seite im Programm ein.Diese Konfigurationsdatei enthält eine Variable für den Pfad zum Include-Verzeichnis, Vorlagenverzeichnis, Bildverzeichnis usw.

Sie können einstellen include_path auch in Ihrer php.ini-Datei.Ich bin ein Perl-Typ, daher erwarte ich, dass ich Includes laden und haben kann include tue das Richtige.Ich habe alle meine Includes in einem bestimmten Verzeichnis, das hinzugefügt wird include_path.Ich kann Dinge tun wie

require_once "ClassName.php";

Ich muss mir keine Gedanken über relative Pfade oder Speicherorte von Dateien machen.

Ich habe auch mein eigenes geschrieben CustomRequire Dinge tun wie

function CustomRequire ($file) {
    if(defined('MYINCLUDEPATH')) {
        require_once MYINCLUDEPATH . "/$file";
    } else {
        require_once $file;
    }
}

Auf diese Weise kann ich meine Einbindungen zu einem späteren Zeitpunkt ändern.Natürlich müssen Sie immer noch eine Möglichkeit finden, Ihren Include-Code einzubinden :)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top