【问题标题】:Including a class using a relative path包含使用相对路径的类
【发布时间】:2012-05-25 10:21:51
【问题描述】:

我正在尝试在我的一个类中使用一个库,即 PHPass 库。

这是我的基本目录结构:

/ (root)
    / mysite
        /application
            /models
                User_model.php
            /libraries
                PasswordHash.php

我想将PasswordHash.php 包含在User_model.php 中。我试过这样做:

// Load PHPass library
include_once('..\libraries\PasswordHash.php');
$hasher = new PasswordHash(8, TRUE);

但是 PHP 找不到文件:

Message: include_once(..\libraries\PasswordHash.php) [function.include-once]: failed to open stream: No such file or directory

【问题讨论】:

  • 您是否尝试过正斜杠 (/)?
  • 使用\ 会使事情变得复杂,因为\ 也是字符串中的转义字符。 / 没有这个问题,所以可以保存使用。
  • 顺便说一句,如果您想在更深的结构中包含/使用该模型,例如 /mysite/web/deep/deeper/index.php ,您将遇到问题!您可以使用绝对路径覆盖该问题

标签: php include relative-path


【解决方案1】:

这取决于您当前的工作目录,而不是它现在实际解析的脚本。尝试转储

getcwd() 

函数输出找出当前的工作目录。为了使用当前文件路径,你可以试试

realpath(__FILE__) 

然后构造它的相对路径。另外,为了不混淆斜线,您可以使用 DIRECTORY_SEPARATOR 常量来分隔文件夹,例如:

require_once(realpath(__FILE__).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'classes'.DIRECTORY_SEPARATOR.'class.php')

【讨论】:

    【解决方案2】:

    您应该使用 / 而不是 \。

    【讨论】:

      【解决方案3】:
      include_once('../libraries/PasswordHash.php');
      

      尝试使用“/”而不是“\”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-30
        • 2013-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多