2015-11-02 7 views
0

У меня есть экземпляр EC2 на веб-сервисах Amazon, и в том же VPC есть экземпляр ElastiCache (Redis). Мой экземпляр EC2 установил Amazon Linux AMI 2015.09. Я также настроил его для работы с mpm_worker_module, а не с предпрок. Конфигурация корректно работает, и я могу получить доступ к страницам из моего браузера.модуль redis.so не загружен

У меня был установлен клиент redis, и команда redis-cli отлично работает с ssh.

У меня был установлен phpredis (https://github.com/nicolasff/phpredis/zipball/master -O phpredis.zip), и я создал простой PHP-скрипт, чтобы проверить, работает ли он правильно (простой index.php).

Если я запускаю этот скрипт из консоли ssh (то есть php index.php), он отлично работает. Если я запускаю тот же сценарий пытается открыть страницу из моего браузера, я получаю эту ошибку: Fatal error: Class 'Redis' not found

Мой файл php.conf внутри апача является следующее:

<IfModule prefork.c> 
    LoadModule php5_module modules/libphp-5.6.so 
</IfModule> 
<IfModule !prefork.c> 
    LoadModule php5_module modules/libphp-zts-5.6.so 
</IfModule> 

В папке/и т.д./PHP- ЗТС-5.6.d Я добавил файл «redis.ini» с внутренним

extension = redis.so 

Я также заметил, что установка Redis добавляет redis.so только к этой папке

/usr/lib64/php/5.6/modules/ 

И не для папки /usr/lib64/php-zts/5.6/modules/, поэтому я скопировал ее из одной папки в другую. Но это все еще не работает, с той же ошибкой:

Fatal error: Class 'Redis' not found 

Вместо этого, если я использую Predis с «включить» из autoload.php, он отлично работает. Но я бы хотел установить phpredis, потому что наша система будет делать тысячи вызовов каждую секунду на Redis Server, а phpredis будет намного быстрее с момента ее компиляции.

Что я делаю неправильно?

Редактировать В моем журнале ошибок Redis я получаю это сообщение

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/5.6/modules/redis.so' - /usr/lib64/php/5.6/modules/redis.so: undefined symbol: compiler_globals in Unknown on line 0 

Plus, если я использую модуль PreFork, он прекрасно работает. Если я использую рабочего, я получил вышеуказанную ошибку.

ответ

1

Решение делает следующие шаги для установки phpredis:

  • скачать и распаковать phpredis
  • команду zts-phpize
  • команда ./configure --with-php-config=/usr/bin/zts-php-config
  • команда make && make install

Я делал phpize и не zts-phpize и я не добавлял опцию --with-php-config: в этом была проблема

Конечно же, вы должны добавить redis.ini в /etc/php-zts-5.6.d/папка с, внутри файла:

extension=redis.so 

Перезапустите Apache и он должен работать

Надеются, что кому-то поможет

P.S. Если вы хотите, чтобы он работал из командной строки (т. Е. «Php script.php»), вы должны установить его также с помощью phpize и простой команды ./configure.

Смежные вопросы