Невозможно загрузить расширение memcache.so


9

Я собрал PHP из исходного кода командой configure

'./configure' '--prefix=/usr/local/php-5.2.8' '--with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d' '--with-apxs2=/usr/local/httpd/bin/apxs' '--with-mysql=/usr/local/mysql/' '--with-zlib' 

Я установил расширение php memcache:

wget http://pecl.php.net/get/memcache
tar -zxvf memcache-2.2.5.tgz
cd memcache-2.2.5
phpize
./configure --enable-memcache
make
make install

Я добавляю в мой /usr/local/lib/php.in

extension=memcache.so

Перезагрузил мой apache и запустил php-m, но, похоже, php не загружает расширение memcache. Я следовал этому решению с этого сайта http://www.howtoforge.com/forums/showthread.php?t=26554

Я добавил полный путь

extension=/usr/local/lib/php/extensions/no-debug-non-zts-20060613/memcache.so 

перезагрузил apache Но он не загружал расширение memcache! Я гуглюсь, но та же проблема! Как я могу загрузить это расширение _ _ "

Ответы:


1

Во-первых, запустите ваш PHP бинарный как

php -v

Он должен жаловаться, что ваш php.ini хочет загрузить модули, которые не могут быть загружены ...

Если он не жалуется, запустите

php --ini

Это должно дать вам местоположение вашего php.ini (только если вы редактируете неправильный вариант: D)

Это помогло?


1

Проблема в том ..., на этом этапе: wget http://pecl.php.net/get/memcache вместо этого tar -zxvf memcache-2.2.5.tgzвы должны сделать tar -zxvf memcache(это имя файла из wget).

После того, как вы извлечете файл, вы получите последнюю версию memcache, в то время как я это делаю, я получаю папку memcache-3.0.8 .

Итак, следующие шаги будут:

cd memcache-3.0.8 
phpize 
./configure --enable-memcache 
make
make install

И, наконец, не забудьте добавить эту строку в ваш php.ini:

extension = memcache.so

И перезапустите Apache.


0

Вы уверены, что memcached установлен в правильном месте? Что вы получите, если запустите:locate memcache.so

Установлен ли memcached (бинарный файл)? Требуются ли дополнительные библиотеки (libmemcache)?


Вы должны использовать find, а не locate, учитывая, что он может еще не быть в базе данных locate.
Cian

Memcached демон установлен успешно! и когда я найду расширение memcache, найдите memcache.so /usr/local/lib/php/extensions/no-debug-non-zts-20060613/memcache.so /usr/local/src/memcache-2.2.5/.libs /memcache.so /usr/local/src/memcache-2.2.5/modules/memcache.so Я думаю, проблема в том, что php не загрузил расширение!
billyduc

0

Добавьте extension_dirдирективу, чтобы сообщить PHP, откуда загружать расширения и удалить путь из extensionдирективы.

extension = memcache.so
extension_dir = /usr/local/lib/php/extensions/no-debug-non-zts-20060613

бедный я! Это не работает!
billyduc

0

Одна вещь, которая помогла мне, это использовать

pecl uninstall memcache
pecl install memcache

Другое дело (это относится только к довольно старым версиям php): http://www.hollub.at/phpmanual/ref.memcache.html говорит:

In order to use these functions you must compile PHP with Memcache support by using the --enable-memcache[=DIR] option. 

0

это из-за того, что ваш / var / tmp смонтирован с разрешением noexec

Вы можете попробовать перекомпилировать memcache с помощью команды fuenfundachtzig после временного удаления символьной ссылки / var / tmp и создания новой папки / var / tmp. (этот параметр может отличаться от вашего сервера)

#rm /var/tmp
#mkdir /var/tmp

#pecl install memcache

затем защитите вашу временную папку

#rm -rf /var/tmp
#ln -s /tmp /var/tmp

подробнее о защите tmp здесь

и как использовать PECL с tmp, смонтированным с noexec


0

Если у вас есть скомпилированный PHP, попробуйте удалить extension_dir из вашего php.ini .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.