Was bedeutet .: In PHP include_path?

10

Ich versuche, Zend auf einem Computer zu installieren, auf dem xampp ausgeführt wird. In der Hilfedatei von Zend heißt es, dass ich zum Einrichten der Befehlszeilentools sicherstellen muss, dass der Inhalt des Verzeichnisses / library in meinem von php include_path angegebenen Verzeichnis abgelegt ist.

Wenn ich mir meine php.ini ansehe, wird include_path auskommentiert, aber der Wert sieht folgendermaßen aus:

; UNIX: "/path1:/path2"
;include_path = ".:/php/includes"

Wo genau zeigt der include_path? Ich bin ziemlich neu in Linux und habe noch nie gesehen .: Als Teil eines Dateipfads.

EmmyS
quelle
2
Sie haben "einen Computer mit xampp" erwähnt. Vielleicht möchten Sie ihn entfernen und stattdessen den Lampenserver installieren, ein Paket in Ubuntu
Marco Ceppi
1
Warum? xampp läuft einwandfrei.
EmmyS
2
Ubuntus Lampe-Server metapackage (tasksel → LAMP Server) ist eine Verteilung des LAMP - Stack, der auf Arbeit zugeschnitten ist besonders gut mit ubuntu . Sie können natürlich xampp verwenden - und es wird gut funktionieren, aber die Ubuntu-Distribution (Version) wird empfohlen (und erforderlich, wenn Sie den Unternehmens-Support von canonical nutzen möchten).
Stefano Palazzo

Antworten:

4

: ist ein Trennzeichen in der Liste der Verzeichnisse.

. bedeutet das aktuelle Verzeichnis

Wenn ein PHP-Skript nach einer Include-Datei sucht, sieht es im selben Verzeichnis wie die PHP-Datei und / php / Includes aus.

misterben
quelle
Der Pfad enthält derzeit zwei Verzeichnisse - das aktuelle (womit Sie vermutlich das Verzeichnis meinen, das tatsächlich php.ini enthält) und / php / include? Wo ist / php / include (soweit dieser Pfad betroffen ist)? Im aktuellen Verzeichnis? Oder irgendwo anders?
EmmyS
Fast, . ist das aktuelle Verzeichnis relativ zu jeder bestimmten PHP-Datei, nicht die php.ini. / php / include ist ein absoluter Pfad, der einen 'php'-Ordner der obersten Ebene in Ihrem Dateisystem erwartet (auf derselben Ebene wie / usr, / etc)
misterben
7

.:ist eigentlich nur .(da :es sich um das Schlüsselwort handelt, das mehrere Pfade trennt), was bedeutet, dass der aktuelle Ordner, in dem das Skript ausgeführt wird, als Teil des include_path enthalten ist. Auf diese Weise, wenn Sie zwei Dateien im selben Verzeichnis haben:

index.php
include-me.php

Sie können die zweite in PHP mit aufnehmen include('include-me.php');. Ohne .auf dem Weg zu sein, wären Sie dazu nicht in der Lage.

Um die Installation wie erwähnt abzuschließen, müssen Sie entweder den Inhalt /libraryin denselben Ordner legen, in dem sich das Skript befindet, an dem Sie arbeiten - oder in /php/includes(Zugegeben, Sie entfernen das ;aus der INI-Datei). Sie können auch ein anderes Verzeichnis erstellen /opt/Zend/libraryund /opt/Zend/libraryIhrer Include-Pfadanweisung hinzufügen :include_path = ".:/php/includes:/opt/Zend/library"

Schließlich - da Sie Ubuntu ausführen, wird empfohlen, stattdessen das LAMP-Setup von Ubuntu zu verwenden (in der meisten Dokumentation wird davon ausgegangen, dass Sie es verwenden). Dies kann installiert werden, indem XAMPP entfernt und ausgeführt wird, sudo tasksel install lamp-serverwodurch Apache 2.2, MySQL, PHP 5.3 auf dem System installiert werden. Wie unter Was ist der einfachste Weg, um einen LAMP-Stapel einzurichten?

Marco Ceppi
quelle
1
Ich bin sehr zufrieden mit xampp. Ich schätze jedoch die anderen Informationen.
EmmyS
@EmmyS Das ist in Ordnung: D - Ich habe gerade meine Antwort auf Ihren Kommentar "Warum" in meine Antwort aufgenommen. Ich möchte nur sicherstellen, dass Sie informiert sind.
Marco Ceppi