【问题标题】:How do I use the PHP constant __DIR__ with `header('LOCATION:'.__DIR__.'/file.php');` when using XAMPP on localhost Linux?在 localhost Linux 上使用 XAMPP 时,如何将 PHP 常量 __DIR__ 与 `header('LOCATION:'.__DIR__.'/file.php');` 一起使用?
【发布时间】:2021-11-06 17:35:51
【问题描述】:

__DIR__ 给了我/opt/lampp/htdocs/folder。因为那确实是我的 Linux 文件系统位置,所以它不会使用 header('LOCATION:'.__DIR__.'/file.php'); 重定向。我怎样才能做到__DIR__ 不会一直到我的 Linux 根目录,而是转到更像 localhost/folder 的东西?我猜这是某种配置的东西,但我不知道。

我想这样做的原因是我可以设置一个const,我可以根据未来客户端放置我的 PHP 的位置来使用它进行重定向。

【问题讨论】:

  • 类似header('Location: /folder/file.php');?
  • 我可以不这样使用__DIR__吗?它仅用于包含和需要的东西吗?我可以忍受,但我想知道是否有办法做到这一点。
  • 这就是__DIR__ 会做的——给出完整的路径~ 不是很适合你的目的,但在几种情况下很有用,而不仅仅是includes
  • ... 这也将为您提供文件系统路径 - 也不适合您的情况。我更多地考虑$_SERVER['SERVER_NAME']$_SERVER['SERVER_PROTOCOL'] 之类的思路
  • 现在似乎有什么问题?你想达到什么目的?如前所述,您不能使用__DIR__$_SERVER['DOCUMENT_ROOT'] 进行重定向。你可以使用类似header('Location: /folder/file.php');的东西重定向到http://localhost:8000/folder/file.php,因为http://localhost:8000是你的服务器。

标签: php linux xampp localhost


【解决方案1】:

这是我想出的:

$dir = preg_replace('@^'.$_SERVER['DOCUMENT_ROOT'].'@', '', __DIR__);

看起来我只能在我获得 __DIR__ 的同一页面上使用它,所以它不能变成可重用的函数。

因此,只要$dir 在我使用header('LOCATION:' 的同一页面上,我就会像这样重定向:

header('LOCATION:'.$dir.'/../folder/file.php');

【讨论】:

    猜你喜欢
    • 2016-09-11
    • 2013-08-04
    • 2015-12-08
    • 1970-01-01
    • 2021-12-27
    • 2014-08-24
    • 2014-02-10
    • 2015-12-27
    相关资源
    最近更新 更多