包含使用相对路径的类

问题描述 投票:0回答:4

我正在尝试在我的一个课程中使用一个库,即 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
php include relative-path
4个回答
1
投票

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

getcwd() 

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

realpath(__FILE__) 

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

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

1
投票

您应该使用 / 而不是 \。


1
投票
include_once('../libraries/PasswordHash.php');

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


0
投票

我发现解决这个问题的唯一方法是使用

$_SERVER["DOCUMENT_ROOT"]
PHP 变量并连接绝对路径。对于你的情况:

include_once $_SERVER["DOCUMENT_ROOT"] . "/mysite/application/libraries/PasswordHash.php";

这不是最好的解决方案,因为它可能会导致很长的声明。然而,这是我发现的使此类包含工作的唯一方法。

额外提示:include 和 require 的括号是多余的。

© www.soinside.com 2019 - 2024. All rights reserved.