答案: 我不得不将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文件。
答案 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,
));