1

私はこの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行目の.ru/php-yubico / test.php警告:require_once(/usr/share/php/Auth/Yubico.php):ストリームを開くことができませんでした:/ var / www / hmci / data/wwwでの操作は許可されていません2行目の/hmci.ru/php-yubico/test.php致命的なエラー:require_once():required'Auth / Yubico.php'(include_path ='。:/ usr / share / php:/ usr / share / pear')2行目の/var/www/hmci/data/www/hmci.ru/php-yubico/test.php

この問題を解決する方法は?

4

2 に答える 2

2

open_basedir特定のディレクトリへの PHP のアクセスを制限する PHP オプションです。

/usr/share/phpインクルードパスにディレクトリがあり、アクセスできません。通常、PHP はすべてのパスをinclude_path1 つずつ試します。これは、PHP がAuth/Yubico.php現在のディレクトリでファイルを見つけることができないため、PHP は/usr/share/php次のディレクトリを検索することを意味します。

含めたいファイルが実際にそこにあることを確認してください。/usr/share/phpインクルード パスから削除することもできます (php.iniファイルにアクセスできる場合はファイルを編集し、それ以外の場合はini_set()メソッドを使用します)。

于 2013-01-22T18:19:20.097 に答える
2

含めるファイルへの明示的なパスを使用すると、PHP がディレクトリ スキャンをスキップし、エラーが発生します。

require_once dirname(__FILE__) . '/Auth/Yubico.php';
于 2015-08-26T17:12:08.503 に答える