PHP函数set_include_path的一点疑问
set_include_path(get_include_path() . P_S . '.' . P_S . $siteConf['baseDir']);
set_include_path(get_include_path() . P_S . '.' . P_S . $siteConf['libDir']);
set_include_path(get_include_path() . P_S . '.' . P_S . $siteConf['baseDir'] . 'app');
代码如上,P_S即PATH_SEPARATOR
问题:
为什么每个路径前都要加'.'这个呢?
我查了下手册,在评论中有这么一个,这说明加它还是有必要的,但是原因还是未知....
joel at pittet dot ca17-Nov-2010 02:46
Seems set_include_path wasn't working for me.
The problem was i didn't have .: in my include_path
Which seemed to stop the set_include_path().
回复内容:
set_include_path(get_include_path() . P_S . '.' . P_S . $siteConf['baseDir']);
set_include_path(get_include_path() . P_S . '.' . P_S . $siteConf['libDir']);
set_include_path(get_include_path() . P_S . '.' . P_S . $siteConf['baseDir'] . 'app');
代码如上,P_S即PATH_SEPARATOR
问题:
为什么每个路径前都要加'.'这个呢?
我查了下手册,在评论中有这么一个,这说明加它还是有必要的,但是原因还是未知....
joel at pittet dot ca17-Nov-2010 02:46
Seems set_include_path wasn't working for me.
The problem was i didn't have .: in my include_path
Which seemed to stop the set_include_path().
"."表示当前目录,":"是两个不同的include path值的分隔符。
include_path中不包含".",PHP碰到include($file), require($file)语句时就不在当前目录(如果访问的是/var/www/html/my_app/index.php,当前目录就是/www/html/my_app/)寻找$file,直接去其它include_path中寻找。
include_path中加不加"."要看你会不会用相对路径包含当前目录下的文件,PHP引擎并不强求。
真机测试测试表明,不管是改ini,还是在代码里调set_include_path(),都可以不带"."
图1:ini中设置include_path
图2:ini中不设置include_path,代码中调用set_include_path()
图3:ini中设置include_path,代码中调用set_include_path()
图4:ini中设置include_path(包含当前目录),代码中调用set_include_path()
此外,如果代码中不调用set_include_path(),ini中也不设置include_path,直接echo get_ include_path(),会输出"."
还有,第一次测试的时候,先set_include_path("/var"),再echo get_include_path(),居然什么都没输出,但我再也没能重现这个现象,不确定是不是当时test.php属于root用sudo的缘故(理论上讲不是,但就是没能重现)
延伸阅读想了解include的更多详情,你可以看我前两周写的一篇文章《细说PHP类库自动加载》:http://weibo.com/1779910713/zg59ehZCd,第二页,第一段。
这货估计是直接 set_include_path("/some/path"); 于是在 include(当前目录下的文件) 的时候出错了。
这就类似于在linux下执行当前目录下的文件不用上 ./ 会出错一样。
如果你用了get_include_path() 去拼的话就不需要这样了。你可以把get_include_path()的值echo出来看看,里头已经包含了 "."

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

Die Anmeldung bei CakePHP ist eine sehr einfache Aufgabe. Sie müssen nur eine Funktion verwenden. Sie können Fehler, Ausnahmen, Benutzeraktivitäten und von Benutzern durchgeführte Aktionen für jeden Hintergrundprozess wie Cronjob protokollieren. Das Protokollieren von Daten in CakePHP ist einfach. Die Funktion log() wird bereitgestellt

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

CakePHP ist ein Open-Source-MVC-Framework. Es erleichtert die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich. CakePHP verfügt über eine Reihe von Bibliotheken, um die Überlastung der häufigsten Aufgaben zu reduzieren.
