Joh*_*ohn 12 php ftp sftp phpseclib
我偶然发现了以前从未在php中使用过的两个函数
set_include_path();
get_include_path();
Run Code Online (Sandbox Code Playgroud)
我目前正在寻找将phpseclib实现到我正在处理的项目上.因为我需要使用SSH2的SFTP类扩展,而后者又需要MathBigInteger类等.等等.
手册说set_include_path()
:
"在脚本的持续时间内设置include_path配置选项."
这对我的框架的其余部分意味着什么,它会设置来自'phpseclib'目录的所有包含路径吗?
另外,我真的没有得到:
set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');
Run Code Online (Sandbox Code Playgroud)
我将php sec存储在我的文件系统中的自定义库目录中,get_include_path()有些神奇地找到我的文件系统中的phpseclib目录吗?
正如你所看到的,我完全迷失在这里......有人可以帮我一点点好吗?
PS/I只需要在应用程序的一个partivular点上使用这个库,因此只想在需要时包含它,目前我想将它包含在我的模型类的子代中.
Jon*_*Jon 16
首先,您需要了解include_path
配置设置的作用:
指定require,include,fopen(),file(),readfile()和file_get_contents()函数查找文件的目录列表.格式类似于系统的PATH环境变量:用Unix中的冒号或Windows中的分号分隔的目录列表.
在查找要包含的文件时,PHP会分别考虑包含路径中的每个条目.它将检查第一个路径,如果找不到它,请检查下一个路径,直到找到包含的文件或返回警告或错误.您可以使用set_include_path()在运行时修改或设置包含路径.
构造
set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');
Run Code Online (Sandbox Code Playgroud)
phpseclib
当您请求包含具有上述功能之一的文件时,会附加到搜索到的目录列表中.
由于phpseclib
是相对路径,因此效果与您指定的相同./phpseclib
,即PHP将查看phpseclib
在进程的当前目录中命名的子目录.它并没有神奇地确定库在文件系统中的位置; 将它放在可以找到的地方是你的工作.
为了更好地理解什么include_path
是和不是,请阅读php.ini手册的这一部分.
如果您正在尝试编写特定于项目的"自动加载器",那么set_include_path
它不是最好的工具(您可能需要查看spl_autoload_register
),但要回答您的问题:
set_include_path
会覆盖以前的任何内容include_path
.可以使用PATH_SEPARATOR
常量作为分隔符提供多个路径,例如:
set_include_path($path1. PATH_SEPARATOR . $path2 . PATH_SEPARATOR . $path3);
Run Code Online (Sandbox Code Playgroud)
因此,您可以添加到已存在的路径,而不是像这样覆盖它:
set_include_path(get_include_path() . PATH_SEPARATOR . $mypath);
Run Code Online (Sandbox Code Playgroud)