2012-05-27 2 views
3

Я установил кэша памяти с помощью SSH, с:Фатальная ошибка: Class 'Memcache' не найден (установлен с PECL)

$ pecl install memcache 

И это был выход: https://pastee.org/w63sy

И добавили эту строку etc/php.ini:

extension=memcache.so 

И при попытке инициализации:

/* MEMCACHE */ 
$memcache = new Memcache(); 
$memcache->pconnect('localhost',11211); 

я получаю:

Fatal error: Class 'Memcache' not found in /home/piscolab/public_html/website.com/includes/sql.php on line 25 

Что я делаю неправильно?

Я нашел этот вопрос, но проблема была в его общем сервере. Я под VPS.

Продолжительность: php -i | grep php.ini:

[[email protected] ~]# php -i | grep php.ini                                                                                                                                             
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/memcache.so' - /usr/lib/php/modules/memcache.so: cannot open shared object file: No such file o 
r directory in Unknown on line 0                                                                                                                                                
Configuration File (php.ini) Path => /etc                                                                                                                                       
Loaded Configuration File => /etc/php.ini                                                                                                                                       
[[email protected] ~]#     

Поиск memcache.so (без вывода)

[[email protected] ~]# find/-type f -name memcache*.so'                                
[[email protected] ~]# find/-type f -name memcache*.so                                 
[[email protected] ~]# 
+1

Вы перезапустили Apache после добавления этой строки в конфигурацию? – DCoder

+0

отрицательный! Я попробую прямо сейчас. благодаря! –

+0

Я перезапустил виртуальную машину и ничего не изменил @DCoder и /etc/init.d/apache2 перезапустил, зарегистрировав меня, что не такой файл или каталог: S –

ответ

3

Учитывая выход сообщения об ошибке, похоже, что вам не хватает библиотек разработки zlib или, по крайней мере, они не находятся в обычном месте, где его можно автоматически найти с помощью configure.

Поскольку вы на CentOS, попробуйте установить библиотеки с помощью этой команды:

yum install zlib-devel 

Это устанавливает библиотеку Zlib, которая требуется для кэша памяти. Попробуйте перезапустить установщик pecl после установки библиотек zlib.

1

это, вероятно, поможет, если вы даете некоторую информацию с помощью phpinfo() или php_config, более конкретно, ваша установка см. в библиотеках memcache и правильные пути к вашей библиотеке.

php-config 

расскажет вам больше, интересно вот путь PHP INI используется и Lib пути PHP путь ини будут отображаться при использовании --configure-опций, подопция --with-конфиг-файл-путь (/ etc/php5/apache2 в моем конкретном случае) , а пути lib будут отображаться с помощью --extension-dir

например

php-config --extension-dir 

php-config --configure-options | grep -o 'with-config-file-path[^ ,.]*' | grep -o '[^=.]*$' 

Так, чтобы использовать мой пример мои Lib пути установлены в

/USR/Lib/php5/20090626 + LFS и команда

ls /usr/lib/php5/20090626+lfs/mem* 

для моей системы показывает:

/usr/lib/php5/20090626+lfs/memcached.so

и мой файл php.ini находится по адресу /etc/php5/apache2/php.ini

функция PHP phpinfo() (просто поместить в файл и просмотреть его) также показывает кэш памяти, который поддерживается и загружено «включена Memcached поддержки» (я специально использовал Memcached расширения, не кэш)

ума вам, что ваш веб-сервер может быть настроен на использование другого пути php.ini (и, следовательно, файла), чем ваша командная строка, поэтому проверьте оба. Также убедитесь, что вы размещаете расширение = memcache.so в правильном месте, так как многие дистрибутивы помещают его в /etc/php5/conf.d/memcache.ini, возможно, есть какое-то несоответствие?

+0

ничего себе! приятель, спасибо за ваш ответ, но я немного потерялся в пути. Я запустил команды ssh, которые вы опубликовали, и сообщит вам об этом. но вы в основном говорите, что мой php.ini не тот, который использует apache? –

+0

это может быть возможным ответом на вашу проблему, да –

+0

Pleaze проверить мое редактирование. кажется, что это правильный путь php.ini, но некоторые ошибки показывают, вы понимаете их? –