PHP 定义(K, V) 引用问题


PHP define(K, V) referencing issue

我正在尝试在我的PHP文件中设置目录,并决定要使用define(K,V),但是我遇到了一个问题:

define('ROOTDIR', explode(DIRECTORY_SEPARATOR , __FILE__));
define('FORUMPATH', ROOTDIR . DIRECTORY_SEPARATOR . "forum" . DIRECTORY_SEPARATOR);

虽然 ROOTDIR 正确返回,但 FORUMPATH 不会,而是 FORUMPATH 返回

ROOTDIR/forum/

而不是

/usr/www/name/public/forum/

真的不明白为什么,根据我对定义功能的理解,这应该有效,只要我按顺序定义键,我做错了什么?

如前所述,将结果explode(DIRECTORY_SEPARATOR , __FILE__)到数组中。在不知道根目录下是什么意思的情况下,我无法为您提供具体的解决方案,但是例如,如果您想将其设置为执行文件的目录,则可以使用__DIR__.

define('ROOTDIR', __DIR__));
define('FORUMPATH', ROOTDIR . DIRECTORY_SEPARATOR . "forum" . DIRECTORY_SEPARATOR);

无论如何,只需计算ROOTDIR的字符串即可。

这应该有效:

define('ROOTDIR', str_replace(DIRECTORY_SEPARATOR .basename(__FILE__), "",__FILE__)); 
define('FORUMPATH', ROOTDIR . DIRECTORY_SEPARATOR . "forum" . DIRECTORY_SEPARATOR);

或者你可以像这样简单:

define('FORUMPATH', __DIR__ . DIRECTORY_SEPARATOR . "forum" . DIRECTORY_SEPARATOR);