Welche Verzeichnisse prüft PHP, wenn es einen relativen Pfad mit include () enthält?

8

Es ist sehr merkwürdig, hat irgendjemand jemals mit einer Schlussfolgerung zusammen gefunden?

Manchmal überprüft es auch das Verzeichnis der enthaltenen Datei.

Aber manchmal nicht.

D: \ test \ 1.php

%Vor%

D: \ test \ 2.php

%Vor%

Dabei steht 3.php im selben Verzeichnis wie 2.php .

Das obige funktioniert, aber warum? Das aktuelle Verzeichnis sollte D:\test sein, aber es kann immer noch 3.php finden, was in D:\test\sub

ist

Weitere Geschichte ( final )

Vor ungefähr einem Jahr bin ich auf dieses Problem gestoßen und habe es dann mit der Hardcoding wie unten beschrieben behoben:

Gemeinsame.php:

%Vor%

Dabei steht Config.inc im selben Verzeichnis wie Common.php

    
user198729 13.03.2010, 11:37
quelle

3 Antworten

2

Wenn Sie sich den Quellcode von php in main / fopen_wrappers.c anschauen, finden Sie

%Vor%

Dies scheint bedingungslos ausgeführt zu werden und wird daher immer eine Datei im selben Pfad wie das included / datei-öffnende Skript zugänglich machen ... als letzte Wahl nach allen in include_path angegebenen Möglichkeiten. Und nur dann, wenn Sie im include () keinen relativen oder absoluten Pfad definieren.

    
VolkerK 13.03.2010 13:38
quelle
1

Er prüft den aktuellen Pfad und die in aufgeführten Verzeichnisse include_path

Sie können phpinfo() ausführen, um Ihren Include-Pfad anzuzeigen.

    
Pekka 웃 13.03.2010 11:41
quelle
1

Manchmal ist das Verzeichnis der enthaltenen Datei current working directory und manchmal nicht
Das aktuelle Verzeichnis kann mit getcwd()

überprüft werden     
Your Common Sense 13.03.2010 11:48
quelle

Tags und Links