We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
为了方便说明,我们先创建一个实验场景,假设有以下文件:
├── example └── jsapi.php └── lib ├── Config.php └── WxPay.php 代码分别是: example/jsapi.php <?php require "../lib/WxPay.php"; echo "ok"; lib/WxPay.php <?php require "Config.php"; lib/Config.php <?php 现在呢,让我们来做个实验,我们执行以下命令 cd example php jsapi.php 得到输出 ok ,一切正常。 简单分析下这个脚本做了什么吧: jsapi.php 俗称入口文件 jsapi.php 加载 lib/WxPay.php 脚本。 lib/WxPay.php 加载 lib/Config.php 脚本。 jsapi.php 输出字符串 ok 现在我们做一些改动,将 lib/WxPay.php 的代码改为: <?php require "./Config.php"; 再次执行 php jsapi.php 结果报错: PHP Warning: require(./Config.php): failed to open stream: No such file or directory in.... 告诉我 lib/WxPay.php 第二行出错,说包含的文件不存在,简而言之就是 require "./Config.php" 出错了,找不到 Config.php 这个文件。 有一点操作系统常识的都知道, ./ 表示的是当前路径,很多人认为加不加 ./ 都是一样的。但在PHP中不然,如果你加了 ./ 或者 ../ ,那么表示路径将明确参照工作目录,也就是我们执行php命令的目录,此时 ./Config.php 会被解读为 example/Config.php 。 那么不加 ./ 呢?为什么可以找到 lib/Config.php ? 我们翻阅PHP手册,关于 include 一章说的比较明确: 被包含文件先按参数给出的路径寻找,如果没有给出目录(只有文件名)时则按照 includepath 指定的目录寻找。如果在 includepath 下没找到该文件则 include 最后才在调用脚本文件所在的目录和当前工作目录下寻找。如果最后仍未找到文件则 include 结构会发出一条警告;这一点和 require 不同,后者会发出一个致命错误。 如果你没明确指定路径,那么PHP会先在include_path中查找,没有再从调用require/include的脚本文件(lib/WxPay.php)目录下查找,还没有?那再从工作目录中查找,也就是执行php命令的那个目录 example/ ,在大部分mvc框架中,也就是入口文件所在目录。 那么 include_path 是什么?可以配置吗? 当然也可以,举个简单的例子吧: <?php $path = '/usr/lib/pear';//自定义的include_path set_include_path(get_include_path() . PATH_SEPARATOR . $path); 代码出自PHP手册 set_include_path ,详情请点击查看。
via:http://ekan001.com/article/35
The text was updated successfully, but these errors were encountered:
No branches or pull requests
为了方便说明,我们先创建一个实验场景,假设有以下文件:
via:http://ekan001.com/article/35
The text was updated successfully, but these errors were encountered: