我正在尝试在我的一个课程中使用一个库,即 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
这取决于您当前的工作目录,而不是它现在实际解析的脚本。尝试倾倒
getcwd()
函数输出找出当前工作目录。为了使用当前文件路径,您可以尝试
realpath(__FILE__)
然后构造它的相对路径。另外,为了不混淆斜杠,您可以使用 DIRECTORY_SEPARATOR 常量来分隔文件夹,例如:
require_once(realpath(__FILE__).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'classes'.DIRECTORY_SEPARATOR.'class.php')
您应该使用 / 而不是 \。
include_once('../libraries/PasswordHash.php');
尝试使用“/”而不是“\”。
我发现解决这个问题的唯一方法是使用
$_SERVER["DOCUMENT_ROOT"]
PHP 变量并连接绝对路径。对于你的情况:
include_once $_SERVER["DOCUMENT_ROOT"] . "/mysite/application/libraries/PasswordHash.php";
这不是最好的解决方案,因为它可能会导致很长的声明。然而,这是我发现的使此类包含工作的唯一方法。
额外提示:include 和 require 的括号是多余的。