4

回答: PREDIS_BASE_PATH のパスを predis/lib/ に変更する必要がありました。

PHP ファイル内に predis をロードしたいのですが、うまくいきません。predis github Web サイト (https://github.com/nrk/predis) で predis をロードするためのガイドに従っています。predisをロードするために使用しているコードは次のとおりです。

define("PREDIS_BASE_PATH", "predis/");
echo "The predis base path is: " . PREDIS_BASE_PATH . "\n";
spl_autoload_register(function($class) {
  $file = PREDIS_BASE_PATH . strtr($class, '\\', '/') . '.php';
  echo "The file variable is: " . $file . "\n";
  if (file_exists($file)) {
    require $file;
    return true;
  }
});

$redis = new Predis\Client(array(
  'host'  => 'localhost',
  'port'  => 6379,
));

これが私が得るエラーです:

Fatal error: Class 'Predis\Client' not found

編集: predis ディレクトリ内のどのファイルをインポートする必要がありますか? フォルダーのアクセス許可を変更した後、変数 $file が保持しているものをエコーすることができます:「ファイル変数は: predis/Predis/Client.php」です。

https://github.com/nrk/predisのディレクトリ リストによると、client.php ファイルはありません。

4

5 に答える 5

13

以下のコードを使用して、php ページで predis を接続しましたが、問題なく動作しました。以下はコードです。

<?php
        require "predis/autoloader.php";
        Predis\Autoloader::register();

        $redis = new Predis\Client(array(
         "scheme" => "tcp",
         "host" => "127.0.0.1",
         "port" => 6379));
?>
于 2012-07-20T06:40:00.820 に答える
3

次のコードを記述して、register メソッドを呼び出します。

Predis\Autoloader::register();

それ以外のPredisAutoloader::register();

そして、テスト ファイルを Predis フォルダーと並行して配置します。

于 2015-09-21T12:31:42.330 に答える
1
$redis = new Predis\Client(array(

する必要があります

$redis = new Predis_Client(array(
于 2011-06-29T00:01:07.470 に答える
0

あなたのコードは完璧に見えます。クラスを正しくインポートしていないとしか思えません。$file は、コードが想定している場所です。

そこにあることを再確認し、使用してアクセス許可を 777 に設定し、sudo chmod -R 777 /path/to/fileそれが機能するかどうかを確認します。

機能する/機能しない場合は、後でアクセス許可をより安全なものにリセットします。

お役に立てれば

編集:

Predis.php をダウンロードし、php コードを含むファイルと同じディレクトリに置き、コードを次のようにします。

  spl_autoload_register(function($class) {
  $file =  strtr($class, '\\', '/') . '.php';
  echo "The file variable is: " . $file . "\n";
  if (file_exists($file)) {
    require $file;
    return true;
  }
});

$redis = new Predis\Client(array(
  'host'  => 'localhost',
  'port'  => 6379,
));
于 2011-06-28T23:15:13.820 に答える