1

这是我正在使用的代码(它是 index.php 文件)

/* Set an include path
*/
$dir = explode('/', __DIR__);
$i = count($dir);
unset($dir[$i-1], $dir[$i-2]);
$path = implode('/', $dir);
ini_set('include_path', $path);

// require('system/base/file.php'); // ***1

/* Starter file
*/
if (file_exists('system/base/file.php')) { require('system/base/file.php'); }
else { exit('Error'); }

我正在开发一个具有这种结构的框架

application/
    public/
        index.php
system/

我想将包含路径设置为根/(包含应用程序/和系统/的文件夹)。__DIR__给了我很多东西,例如Application/xammp/htdocs/application/public/index.php(在本地主机中);__DIR__考虑到我最初对路径一无所知,我不确定客户是否有很大不同。我刚刚写了前几行,以便轻松地从DIR中删除最后 2 个文件夹,所以我确信路径是正确__DIR__的。我在另一个测试设置中测试了这些行,它们工作正常。

发生的奇怪事情是,如果我运行显示在那里的代码,它会给我“错误”。如果我只是system/base/file.php在检查它是否存在之前需要它,它就可以工作。因此,如果我取消注释 (***1) 该文件是必需的。

4

1 回答 1

2

您可以使用 $path = dirname(dirname( DIR )),这将实现与前 5 行代码相同的效果。

根据 PHP 文档,include_path 仅适用于:require()、include()、fopen()、file()、readfile() 和 file_get_contents(),而不是 file_exists()。因此,您必须将 $path 存储在变量或常量中。例如:

/* Set an include path
*/
$path = dirname(dirname(__DIR__));
ini_set('include_path', $path);
define('PATH', $path)

// require('system/base/file.php'); // ***1

/* Starter file
*/
if (file_exists(PATH . 'system/base/file.php')) { require('system/base/file.php'); }
else { exit('Error'); }
于 2011-11-13T14:02:48.970 回答