Почему getcwd() возвращает / в __destruct()?
Я только что заметил, что getcwd() возвращает "/", если вызывается внутри магической функции __destruct(), тогда как в любом другом методе он возвращает ожидаемый путь.
У вас есть объяснение этому?
2 ответа
Решение
Это поведение SAPI
"Деструкторам, вызываемым во время завершения работы скрипта, уже отправлены заголовки HTTP. Рабочий каталог на этапе завершения работы скрипта может отличаться для некоторых SAPI (например, Apache)".
От http://php.net/manual/en/language.oop5.decon.php
Но, как упоминалось в других ответах, существует множество способов получить текущий относительный путь. Если вы изменили его во время выполнения, обязательно отметьте где-нибудь внутри объекта.
Есть старая ошибка.
Вместо getcwd()
не могли бы вы использовать __FILE__
?