【问题标题】:How to require a relative path in PHP如何在 PHP 中要求相对路径
【发布时间】:2012-11-06 00:37:42
【问题描述】:

我如何 PHP 从符号链接内部使用 Linux 服务器上的相对路径要求文件?

我试过了:

require_once(dirname(__DIR__) . "/app.config.php");

但这会引发错误,说明文件不存在。这是文件结构:

/srv/www/accounts/dev
   app => /srv/www/myapp
       index.php
   app.config.php

所以app 是指向/srv/www/myapp 的符号链接,但是当我尝试要求app.config.php 时,php 会感到困惑并尝试要求/srv/www/myapp/app.config.php 而不是/srv/www/accounts/dev/app.config.php

这怎么可能?谢谢。

【问题讨论】:

  • 应该是__DIR__dirname(__FILE__)
  • 我也一直在尝试这样做。没有任何运气。 :'( 答案会很好。问题是 php 试图将链接路径转换为实际路径。

标签: php relative-path require


【解决方案1】:

试试require_once(__DIR__.'../app.config.php');

希望有效:)

请注意,如果您使用的是 PHP dirname(__FILE__) 而不是 __DIR__ :)

【讨论】:

  • 查看原始问题(已更新),问题似乎是因为我使用的是符号链接。
  • 应该是__DIR__dirname(__FILE__)
  • 所以这行得通,但它的草率和hackie。无论如何要减少这个? require_once(dirname(__DIR__) . "/../accounts/dev/app.config.php");
【解决方案2】:

require_once(__DIR__."/../app.config.php");

【讨论】:

  • 那里缺少一个结束引号,并且为了迂腐,你应该使用单引号:)
  • 感谢您发现缺少的结尾引号 - 我已修复。
  • 查看原始问题(已更新),问题似乎是因为我使用的是符号链接。
  • 查看我对您原件的评论,不确定是拼写错误还是什么
  • 所以这行得通,但它的草率和hackie。无论如何要减少这个? require_once(dirname(__DIR__) . "/../accounts/dev/app.config.php");
【解决方案3】:

我认为这是文件夹的设置方式,如果你喜欢 /srv/www/accounts/dev/app.config.php。与 /srv/www/myapp/app.config.php 位于不同的文件夹中

一个在 /accounts/dev 中,另一个在 /myapp

你不想要一个你想要绝对的相对路径,相对只会在那个文件夹中你必须至少让它知道要检查哪个文件夹,所以我想你想去另一个文件夹

【讨论】:

    【解决方案4】:

    您可以尝试使用 realpath() 来获取路径。那应该扩展符号链接并返回绝对路径。比如:

    require_once(realpath('../') . "app.config.php");
    

    【讨论】:

      猜你喜欢
      • 2016-05-22
      • 2012-12-03
      • 2012-04-21
      • 2016-10-28
      • 2012-10-17
      • 2018-03-26
      • 1970-01-01
      • 2011-06-06
      • 2014-09-05
      相关资源
      最近更新 更多