麻烦在php网站上加载predis

时间:2011-06-28 23:05:22

标签: php redis predis

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

我想在PHP文件中加载predis,但是我遇到了麻烦。我正在按照指南在predis github网站上加载predis(https://github.com/nrk/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文件。

5 个答案:

答案 0 :(得分:12)

我使用下面的代码在php页面上连接predis,它运行正常..下面是代码

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

        $redis = new Predis\Client(array(
         "scheme" => "tcp",
         "host" => "127.0.0.1",
         "port" => 6379));
?>

答案 1 :(得分:3)

编写以下代码来调用寄存器方法:

Predis\Autoloader::register();

而不是PredisAutoloader::register();

并将测试文件与Predis文件夹并行。

答案 2 :(得分:1)

$redis = new Predis\Client(array(

应该是

$redis = new Predis_Client(array(

答案 3 :(得分: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";
...

答案 4 :(得分:0)

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

仔细检查它并使用sudo chmod -R 777 /path/to/file将权限设置为777,看看是否有效。

如果有效/无效,请将权限重置为更安全的内容。

希望这有帮助

编辑:

下载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,
));