5

给定一个具有以下结构的 PHP 应用程序:

/
    lib/
        mylib.php
    web/
        index.php // includes "mylib.php" with: require_once __DIR__ . "/../lib/mylib.php"

我正在尝试使用相同的源库同时涵盖以下情况:

  1. No Phar:能够按原样使用应用程序,DocumentRoot指向web/并将所有请求重定向到index.php
  2. Minimal Phar:能够生成仅包含web/index.php的 phar并将保存为:web/application-minimal.phar
  3. Full Phar:能够生成包含lib目录和web/index.php内容的 phar ,并将保存为:web/application-full.phar

对于 phar 文件,所有请求都将被重定向到 phar 文件本身。

是否可以在不必更改 *require_once* 的情况下实现所有这些用例?

我尝试了不同的方法(相对/绝对)来包含来自 *web/index.php" 的lib/mylib.php,以及尝试使用Phar::mount()的一些技巧。我的尝试都没有成功。

4

1 回答 1

1

只需依靠您的包含路径。

不要这样做:

require_once __DIR__ . "/../lib/mylib.php";

但:

require_once "mylib.php";

并在脚本开头设置包含路径:

set_include_path(__DIR__ . '/../lib/' . PATH_SEPARATOR . get_include_path());
于 2013-03-11T08:21:35.140 回答