установить memcache на ОС Linux - PullRequest
0 голосов
/ 28 января 2011

Я установил memcache следующим образом:

1) yum установить memcached 2) ням установить php-pecl-memcached 3) Также включен файл memcached.so в php.ini

Я протестировал memcached следующим образом:

$ mc = новый Memcache; $ mc-> addServer ('localhost', 11211); echo "Версия сервера:". $ mc-> getVersion ();

Но выдает следующую ошибку:

Предупреждение PHP: Запуск PHP: невозможно загрузить динамическую библиотеку '/usr/lib64/php/modules/memcached.so' - /usr/lib64/php/modules/memcached.so: неопределенный символ: php_json_encode в Неизвестно в строке 0 Неустранимая ошибка PHP: класс 'Memcache' не найден в /root/memcacheTest.php в строке 2

Спасибо.

Ответы [ 5 ]

1 голос
/ 09 июля 2015

Это показало, что memcached.so не загружен успешно.

Ошибка показывает причину: json.so должен быть загружен до memcached.so

Пожалуйста, используйте php -m | grep memcached, чтобы проверить, успешно ли загружен memcached.so.

  • Если показать memcached, это значит, что все получилось.
  • Если показать как PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/memcached.so' - /usr/lib64/php/modules/memcached.so: undefined symbol: php_json_decode_ex in Unknown on line 0

Вот решение: например, ваш php.ini - это /etc/php.ini, ваш php.d - это /etc/php.d/

Решение 1

  1. комментарий 'memcached.so' в php.ini
  2. vim /etc/php.d/memcached.ini
  3. добавить extension=memcached.so в /memcached.ini
  4. php -m | grep memcached проверить, успешно ли загружена memcached

Решение 2

  1. rm /etc/php.d/json.ini
  2. добавить extension=json.so в php.in до extension=memcached.so
  3. php -m | grep memcached проверить, успешно ли загружена memcached
1 голос
/ 28 января 2011

Я плохо знаю PHP (или вообще не знаю), но из сообщения об ошибке я рискну предположить, что у вас не установлено расширение PHP JSON, которое, по-видимому, необходимо для расширения memchached.

Видимо , расширение JSON было в PHP начиная с версии 5.2.0, поэтому:

  • У вас более старая версия, и вам нужно самостоятельно обновить или установить расширение JSON

или

  • Ваш дистрибьютор операционной системы поставляет расширение PHP JSON в другом пакете, который вы не установили.

Конечно, существует вероятность неверной конфигурации, но я думаю, что это немного менее вероятно.

0 голосов
/ 15 сентября 2011

Попробуйте установить версию 2.0.Это помогло мне.

yum -y install gcc-c++
wget http://launchpad.net/libmemcached/1.0/0.50/+download/libmemcached-0.50.tar.gz
tar xzf libmemcached-0.50.tar.gz 
cd libmemcached-0.50
./configure 
make 
make install
wget http://pecl.php.net/get/memcached-2.0.0b2.tgz
pecl install memcached-2.0.0b2.tgz
echo 'extension=memcached.so' > /etc/php.d/memcached.ini
service php-fpm restart
cd ..
rm -r libmemcached-0.50*
rm -r memcached-
0 голосов
/ 03 августа 2011

http://pecl.php.net/bugs/bug.php?id=17574&edit=1

Просто убедитесь, что расширение = json.so указано ДО расширение = memcached.so.

Я поместил extension = memcached.so в php.ini и extension = json.so был указан в /etc/php.d/json.ini, который анализируется ПОСЛЕ php.ini. Вот почему PHP не может найти php_json_encode () в точке загрузки memcached.so.

Кроме того, убедитесь, что разрешения для memcached.so такие же, как и у других расширений

0 голосов
/ 28 января 2011

Можете ли вы проверить и перепроверить права пользователя?Кроме того, мой опыт работы с PHP заключается в том, что версии PHP для репозитория не очень хороши.Я решил эти символьные ошибки, скомпилировав PHP с нуля.Но это очень радикальное и трудоемкое решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...