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__); в первую очередь

Другие вопросы по тегам