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

时间:2014-11-15 23:53:34

标签: php

我试图在我的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/

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

2 个答案:

答案 0 :(得分:1)

如前所述,explode(DIRECTORY_SEPARATOR , __FILE__)会产生一个数组。我不能在不知道根目录下你的意思给你一个具体的解决方案,但是例如,如果你想将它设置为执行文件的目录,你可以使用__DIR__

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

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

答案 1 :(得分:-3)

这应该有效:

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);