Проблемы с загрузкой предисловия на сайте php - PullRequest
3 голосов
/ 29 июня 2011

Ответ: Мне пришлось изменить путь PREDIS_BASE_PATH на predis / lib /.

Я хочу загрузить predis внутри файла PHP, но у меня возникли проблемы.Я следую инструкциям по загрузке predis на веб-сайте predis github (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: «Переменная file: predis / Predis / Client.php»

Согласно списку каталогов здесь, https://github.com/nrk/predis, файл client.php отсутствует.

Ответы [ 5 ]

12 голосов
/ 20 июля 2012

Я использую приведенный ниже код для подключения predis на странице php, и он работал нормально .. ниже код

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

        $redis = new Predis\Client(array(
         "scheme" => "tcp",
         "host" => "127.0.0.1",
         "port" => 6379));
?>
3 голосов
/ 21 сентября 2015

введите приведенный ниже код для вызова метода регистрации:

Predis\Autoloader::register();

вместо PredisAutoloader::register();

И поместите тестовый файл параллельно папке Predis.

1 голос
/ 06 октября 2016

Я использовал 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";
...
1 голос
/ 29 июня 2011
$redis = new Predis\Client(array(

должно быть

$redis = new Predis_Client(array(
0 голосов
/ 29 июня 2011

Ваш код выглядит отлично. Я могу только предположить, что вы неправильно импортируете класс. Вы уверены, что $ 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,
));
...