4

答: 我不得不将 PREDIS_BASE_PATH 的路径更改为 predis/lib/。

我想在 PHP 文件中加载 predis,但我遇到了麻烦。我正在按照 predis github 网站 (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

编写以下代码来调用注册方法:

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 回答
1

我使用 composer 安装 Redis,但很难让它工作。最终,以下脚本起作用了。

define('__ROOT__', dirname(dirname(__FILE__))); 
echo "Root ".dirname(dirname(__FILE__));
require_once(__ROOT__.'/vendor/autoload.php');//load all PHP dependencies
//require_once(__ROOT__.'/vendor/predis/predis/autoload.php'); //load only Redis also works
$REDIS_SERVER="127.0.0.1";
$REDIS_PORT=6379;
try 
{
    echo "<p>Connecting to Redis $REDIS_SERVER:$REDIS_PORT";

    $redis = new Predis\Client(array(
        "scheme" => "tcp",
        "host" => $REDIS_SERVER,
        "port" => $REDIS_PORT
    ));
    echo "<p>Hello I am Redis";
...
于 2016-10-06T15:37:32.723 回答
0

您的代码看起来非常好。我只能假设您没有正确导入该类。您确定 $file 是代码假设的位置吗?

仔细检查它的存在并将权限设置为 777sudo 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 回答