Базовое имя PHP ( __DIR__) возвращает _DIR_ на некоторых серверах

Я надеюсь, что кто-то здесь знает ответ на это. Я написал скрипт, который использует

basename( __DIR__ )

затем использует функцию, если существует файл.

На моем сервере это работает нормально, однако на другом сервере он на самом деле возвращает слово _DIR_ вместо пути к файлу.

Изменилось ли это с версией PHP или есть какие-то другие настройки, которые делают это так, что это не работает?

Наконец, есть ли лучший способ получить путь к файлу? Вот вся строка, которую я использую:

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

(да, я знаю, что это функция WordPress, но это не вопрос WordPress, а вопрос PHP)

2 ответа

Решение

__DIR__ введен в PHP 5.3 . Дважды проверьте вашу версию PHP.

Ссылка: http://php.net/manual/en/language.constants.predefined.php

Если __DIR__ константа не работает на сервере A, пока работает на сервере B, тогда версия PHP является проблемой (как упомянуто @Shivan).

Вы можете просто проверить это, позвонив phpinfo() на обоих серверах.

Вот быстрый обходной путь для вас:

// this should be at the top
if (!defined('__DIR__')) {
   define('__DIR__', dirname(__FILE__));
}
Другие вопросы по тегам