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