我正在尝试使用 PEAR Auth 进行 php 站点身份验证。我遵循了官方文档中的示例,但我无法摆脱很多像这样的通知警报:
Notice: Constant DB_OK already defined in /usr/share/php/DB.php on line 47
Call Stack:
0.0005 647400 1. {main}() /var/www/concursosRep/admin/index.php:0
0.0751 7100160 2. include('/var/www/concursosRep/admin/loginbeta.php') /var/www/concursosRep/admin/index.php:60
0.0788 7448160 3. Auth->start() /var/www/concursosRep/admin/loginbeta.php:114
0.0790 7448528 4. Auth->login() /usr/share/php/Auth.php:528
0.0790 7448608 5. Auth->_loadStorage() /usr/share/php/Auth.php:546
0.0790 7448608 6. Auth->_factory() /usr/share/php/Auth.php:445
0.0809 7681728 7. include_once('/usr/share/php/Auth/Container/DB.php') /usr/share/php/Auth.php:468
0.0839 8066384 8. require_once('/usr/share/php/DB.php') /usr/share/php/Auth/Container/DB.php:32
0.0869 8374552 9. define() /usr/share/php/DB.php:47
我知道这意味着以某种方式多次包含该库,但我不知道如何修复它。在我的 php.ini 中,我在 include_path 中有这个:
include_path .:/usr/share/php:/usr/share/php/libzend-framework-php
我首先认为问题在于 Zend 在某个地方加载了 pear auth 的类,所以我将 include_path 更改为: .:/usr/share/php 但我遇到了同样的问题。
这是我使用它的方式:
require_once ('Auth.php');//Pear Auth
$dns = 'mysql://'.USER.':'.Util::decodePass(PASSWORD).'@'.SERVER.'/'.DBNAME;
$options = array(
'dsn' => $dns,
'table' => 'usuario',
'usernamecol' => 'login',
'passwordcol' => 'password',
'cryptType' => 'md5', //'sha1'
'db_fields' => '*'
);
// Create the Auth object:
$auth = new Auth('DB', $options, 'show_login_form');
// Start the authorization:
$auth->start();
// Confirm authorization:
if ($auth->checkAuth()) {
//Authorized
echo(javaScriptRedirect(true,$js));
} else { // Unauthorized.
echo(javaScriptRedirect(false,$js));
}
我试图DB.php
在我的系统中找到两个文件;这是我得到的:
# sudo find -name DB.php -print
./usr/share/php/DB.php
./usr/share/php/Auth/Container/DB.php
我试图找到我的脚本中包含的重复文件,这是我得到的:
#var_dump(get_included_files());
string(23) "/usr/share/php/Auth.php" [30] => string(36) "/usr/share/php/Auth/Container/DB.php" [31] => string(33) "/usr/share/php/Auth/Container.php" [32] => string(21) "/usr/share/php/DB.php" [33] => string(23) "/usr/share/php/PEAR.php" [34] => string(24) "/usr/share/php/PEAR5.php" [35] => string(27) "/usr/share/php/DB/mysql.php" [36] => string(28) "/usr/share/php/DB/common.php" }
希望有人可以帮助找出问题所在。问候。