PHP __FILE__ returns backslashes in Linux VM file mounted from OSX Host
Я запускаю LAMP в Fedora VM с хоста OSX (Mavericks).
файл в папке, смонтированной на виртуальной машине: /media/sf_www/application/Some/Name/Space/FileName.php
<?php
namespace Some\Name\Space;
die(__FILE__);
?>
выходы
/media/sf_www/application/Some\Name\Space\FileName.php
Тем не менее, у меня есть тот же сайт, работающий в рабочей среде на хосте Linux, и тот же сценарий выводит все с косой чертой.
Давайте предположим, что я не могу коснуться кода.
Что-нибудь в конфигурации php я могу сделать на моем vm, чтобы вывести прямые косые черты?
Почему это происходит? OSX также должен использовать прямую косую черту, даже если он использует разделитель каталогов с компьютера, на котором размещается виртуальная машина.
Редактировать: это происходит только тогда, когда файл загружается через Kohana. Если я обращаюсь непосредственно к скрипту (apache или CLI), вывод правильный (прямая косая черта)
1 ответ
Это своего рода связанный вопрос: разделители каталогов PHP, форсирующие косую черту; ненавязчивый
Ответ, который он дает, состоит в том, что нет никакой конфигурации, которую вы изменяете, чтобы она использовала только один тип слеша.
Почему это происходит? Понятия не имею, может быть, это квази-баг в Кохане. И, возможно, отчасти это ошибка PHP, потому что функция, которая объединяет пути, немного не зависит от того, какой тип слеша она принимает.
Есть ли причина, по которой это должно иметь значение? Если у вас есть один вид слеша, вы можете просто сделать str_replace('\\', '/', __FILE__);
в первую очередь