У меня есть экземпляр 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, он прекрасно работает. Если я использую рабочего, я получил вышеуказанную ошибку.