basedir限制有效
我使用这个Yubico认证PHP类:https://github.com/Yubico/php-yubico。 我用这个代码创建了php文件test.php:
<?php
require_once 'Auth/Yubico.php';
$otp = "ccbbddeertkrctjkkcglfndnlihhnvekchkcctif";
# Generate a new id+key from https://api.yubico.com/get-api-key/
$yubi = new Auth_Yubico('42', 'FOOBAR=');
$auth = $yubi->verify($otp);
if (PEAR::isError($auth)) {
print "<p>Authentication failed: " . $auth->getMessage();
print "<p>Debug output from server: " . $yubi->getLastResponse();
} else {
print "<p>You are authenticated!";
}
?>
并做这个github库中的所有说明。 当我打开这个脚本时,我得到:
警告:require_once():有效的open_basedir限制。 文件(/usr/share/php/Auth/Yubico.php)不在/ var / www / hmci / data / www / hmci中允许的路径中:(/ var / www / hmci / data :.)第2行警告:require_once(/usr/share/php/Auth/Yubico.php):无法打开流:/ var / www / hmci / data / www中的操作不允许致命错误:require_once():无法打开所需的'Auth / Yubico.php'(include_path ='。:/ usr / share / php:/ usr / share /梨')在/var/www/hmci/data/www/hmci.ru/php-yubico/test.php在第2行
如何解决这个问题呢?
open_basedir
是一个限制PHP访问特定目录的PHP选项。
您的包含路径中有/usr/share/php
目录,但无法访问它。 通常,PHP会逐个尝试include_path
所有路径。 这意味着PHP无法在当前目录中找到文件Auth/Yubico.php
,因此PHP会在/usr/share/php
下一个。
确保你想要包含的文件实际存在。 您也可以从包含路径中删除/usr/share/php
(如果您有权访问它,可以编辑php.ini
文件,也可以使用ini_set()
方法)。
使用明确路径指向要包含的文件会导致PHP跳过导致该错误的目录扫描:
require_once dirname(__FILE__) . '/Auth/Yubico.php';
链接地址: http://www.djcxy.com/p/58119.html
上一篇: basedir restriction in effect
下一篇: php processing / variable in php file that generates xml file of markers