#php #linux #xampp #localhost
Вопрос:
__DIR__
это дает мне /opt/lampp/htdocs/folder
. Поскольку это действительно мое местоположение файловой системы Linux, оно не будет перенаправляться с помощью header('LOCATION:'.__DIR__.'/file.php');
. Как мне сделать так __DIR__
, чтобы он не дошел до моего корневого каталога Linux, а вместо этого перешел к чему-то более похожему localhost/folder
? Я предполагаю, что это какая-то конфигурация, но я понятия не имею.
Причина, по которой я хочу это сделать, заключается в том, чтобы я мог установить const
, что я могу использовать для перенаправления в зависимости от того, куда будущий клиент помещает мой PHP.
Комментарии:
1. Что-то вроде
header('Location: /folder/file.php');
?2. Могу я просто так не пользоваться
__DIR__
? Это только для того, чтобы включать и требовать вещи? Я могу жить с этим, но я хотел бы знать, есть ли способ это сделать.3. вот что
__DIR__
будет сделано — дайте полный путь ~ не совсем подходящий для вашей цели, но полезный в нескольких ситуациях не толькоincludes
4. … который также даст вам путь к файловой системе — также не подходит в вашем случае. Я больше думал о том
$_SERVER['SERVER_NAME']
,$_SERVER['SERVER_PROTOCOL']
что и тому подобное5. В чем, кажется, проблема прямо сейчас? Чего вы пытаетесь достичь? Как уже говорилось, вы не можете использовать
__DIR__
или$_SERVER['DOCUMENT_ROOT']
перенаправлять. Вы можете использовать что-то вродеheader('Location: /folder/file.php');
перенаправленияhttp://localhost:8000/folder/file.php
, хотя, учитывая, чтоhttp://localhost:8000
это ваш сервер.
Ответ №1:
Вот что я придумал:
$dir = preg_replace('@^'.$_SERVER['DOCUMENT_ROOT'].'@', '', __DIR__);
Похоже, я могу использовать это только на той же странице, которую я получаю __DIR__
, поэтому ее нельзя превратить в функцию многократного использования.
Поэтому, пока $dir
он находится на той же странице, на которой я использую header('LOCATION:'
, я перенаправляю, как:
header('LOCATION:'.$dir.'/../folder/file.php');