PHP basename(__DIR__)在某些服务器上返回_DIR_

时间:2013-08-14 06:18:04

标签: php filepath dir

我希望有人知道答案。我写了一个使用

的脚本

basename( __DIR__ )

然后使用if文件存在函数。

在我的服务器上,这可以正常工作,但是在其他服务器上它实际上返回单词_DIR_而不是文件路径。

这是用PHP版本更改的还是有其他一些设置使得它不起作用?

最后是否有更好的方法来获取文件的路径?以下是我正在使用的整行:

define('NIFTY_CONSTANT', trailingslashit (WP_PLUGIN_DIR . '/'. basename( __DIR__ ) ). '/lib/mdetect.php' );

(是的,我知道这是一个WordPress功能,但这不是一个WordPress问题,它是一个PHP)

2 个答案:

答案 0 :(得分:8)

PHP 5.3中引入了

__DIR__。仔细检查您的PHP版本。

参考:http://php.net/manual/en/language.constants.predefined.php

答案 1 :(得分:4)

如果__DIR__常量在服务器A上不起作用,而在服务器B上工作,那么PHP版本就是一个问题(如@Shivan所述)。

您只需在两台服务器上调用phpinfo()即可对其进行测试。

以下是您的快速解决方法:

// this should be at the top
if (!defined('__DIR__')) {
   define('__DIR__', dirname(__FILE__));
}