Frage

Derzeit verwende ich auf meiner Website Aussagen wie:

include 'head.php';
include '../head.php';
include '../../head.php';

Abhängig davon, wie viele verschachtelte Ordner tief bin. Ich bin sicher, es gibt einen besseren Weg, dies zu tun.

Ich bin überzeugt .htaccess ist die Lösung, aber ich bin mir nicht sicher, wie ich sie implementieren soll. Wenn ich einfüge:

php_value include_path "public/html/root"

... Ich verliere den Rest meiner Wege (/usr/lib/php, etc). Ich habe es naiv versucht:

php_value include_path $include_path . "(path)"

Aber das hat natürlich nicht funktioniert. Wie könnte ich einen einzelnen Pfad dieser Liste vorbereiten oder anhängen? .htaccess?

War es hilfreich?

Lösung

Wenn Sie die nicht bearbeiten können php.ini Datei selbst können Sie hinzufügen

set_include_path(get_include_path() . PATH_SEPARATOR . $path_to_add);

vor deinem include Aussagen.

Wenn Sie sich jedoch befinden, haben Sie jedoch include oder require Probleme, es ist wahrscheinlich ein Codegeruch. Die beste Lösung wäre ein gutes objektorientiertes Design mit einem guten __autoload Funktion.

Andere Tipps

Erstellen Sie im Unter-Sub-Verzeichnis eine Datei .htaccess mit dem Inhalt

php_value include_path '../../includes'

oder Wasauchimmer include_path ist richtig für dieses Verzeichnis.

Vorteile:

  1. Kein hässlicher Hack mit mehreren umfasst eine andere Tiefe. Gerade include 'head.php'.
  2. Keine Abhängigkeit von der Bearbeitung php.ini.
  3. Keine Notwendigkeit zu verwenden set_include_path() Voreingenommen.
  4. Keine Abhängigkeit von Einbeziehung von Konstanten wie include INCLUDE_PATH . 'head.php'.

Zu zahlender Preis:

Sie verstreuen Ihre Unterabrechnung jeweils mit einer Datei .htaccess.

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