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

Как установить разные версии memcache с разными версиями lampp

Мне нужно использовать разные версии lampp (xampp для Linux).
Недавно мне также нужно использовать memcache с любой версией lampp, которая может мне понадобиться.
Все идет хорошо, если я использую последнюю версию lampp 1.7.7, которая содержит PHP 5.3.8, я просто делаю

sudo apt-get install php5-memcache
sudo cp -av '/usr/lib/php5/20090626+lfs/memcache.so' '/opt/lampp/lib/php/extensions/no-debug-non-zts-20090626/memcache.so'

Проблема в том, что я пытаюсь сделать то же самое со старой версией lampp.
Например, я удалил lampp 1.7.7 и php5-memcache, затем я установил lampp 1.7.1, который содержит PHP 5.2.9, но делает

sudo apt-get install php5-memcache

Я получаю более новую версию memcache (20090626) для более старой версии php (20060613). Фактически, если я попытаюсь скопировать

sudo cp -av '/usr/lib/php5/20090626+lfs/memcache.so' '/opt/lampp/lib/php/extensions/o-debug-non-zts-20060613/memcache.so'

Я получаю эту ошибку при запуске lampp:

Starting XAMPP for Linux 1.7.1...
PHP Warning:  PHP Startup: memcache: Unable to initialize module
Module compiled with module API=20090626, debug=0, thread-safety=0
PHP    compiled with module API=20060613, debug=0, thread-safety=0
These options need to match
in Unknown on line 0

Если я удалю php5-memcahe и удалю memcache.so из расширения lampp

sudo apt-get remove php5-memcache
sudo rm /opt/lampp/lib/php/extensions/no-debug-non-zts-20060613/memcache.so

если я попытаюсь сделать

sudo pecl i memcache

я получил

pecl/memcache is already installed and is the same as the released version 2.2.6
install failed

Итак, как мне установить memcache.so версии 20060613, когда я использую lampp 1.7.1?

Простое решение. Вам нужна сборка memcache.so с API 20060613. Это довольно старая версия, но если вы перейдете к http://packages.ubuntu.com/hardy/php5-memcache вы найдете как пакеты amd64, так и i386. Бегать

uname -m

чтобы узнать, какая у вас архитектура, и соответственно загрузить пакет. После того, как вы загрузили пакет, просто зайдите в mc, откройте пакет, получите memcache.so и скопируйте его в / opt / lampp / lib / php / extensions / no-debug-non-zts-20060613 / и добавьте в php.ini

extension=memcache.so

если он говорит, что не находит memcache. поэтому, вероятно, вам следует соответствующим образом настроить extensiondir.

Перезагрузите apache и посмотрите php_info (); Он должен быть там.

В будущем попробуйте использовать версии php / apache / mysql для ubuntu / debian и не используйте lampp. Я знаю, что с lampp намного проще, но после того, как вы поймете, что происходит «под капотом», вам будет легче создавать свои приложения и понимать Linux. Еще одна проблема с lampp - обновления безопасности. Если вы используете версии Ubuntu или Debian, у вас будут все обновления с ОС, и весь процесс обновления займет секунды, а не часы или дни.

При использовании автоматизированных инструментов для установки apache и php вы в значительной степени ограничены степенью гибкости при запуске различных версий приложений.

Я бы загрузил исходники для apache и php и установил их через

./configure {with all the options and independent paths that you want} make ; make install

Это позволит вам сделать две вещи.

  1. Держите свою среду отдельно от автоматических инструментов, таких как yum и apt-get install
  2. Это позволит вам установить независимую версию надстройки pecl для конкретной версии.

В долгосрочной перспективе это может быть немного сложнее. Но по мере вашего роста и адаптации это даст вам гораздо больше возможностей для сравнения.

Также у вас проблема с pecl, возможно, вы уже установили его. Попробуйте бежать

[путь] / список pecl

Он сообщит вам, что вы уже установили. Для удаления вы можете использовать

pecl remove [название продукта]

Чтобы удалить любые плагины, которые вы не хотите устанавливать