Назад | Перейти на главную страницу

Не удалось загрузить расширение memcache.so

Я построил 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! Я погуглил, но та же проблема! Как мне загрузить это расширение _ _ "

Сначала запустите свой двоичный файл php, например

php -v

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

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

php --ini

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

Это помогло?

Проблема ... на этом этапе: 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.

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

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

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

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

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

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. 

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

вы можете попробовать перекомпилировать кэш памяти с помощью команды 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

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