Я установил memcache через ssh, используя:
$ 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
php -i | grep php.ini
:
[root@vps ~]# 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 [root@vps ~]#
Поиск memcache.so (без вывода)
[root@vps ~]# find / -type f -name memcache*.so' [root@vps ~]# find / -type f -name memcache*.so [root@vps ~]#
Учитывая вывод сообщения об ошибке, похоже, что вам не хватает библиотек разработки zlib
или, по крайней мере, они не находятся в обычном месте, где его можно автоматически найти с помощью configure.
Поскольку вы находитесь в CentOS, попробуйте установить библиотеки с помощью этой команды:
yum install zlib-devel
Это устанавливает библиотеку zlib, которая требуется для memcache. Попробуйте перезапустить установщик pecl после установки библиотек zlib.
это, вероятно, поможет, если вы предоставите дополнительную информацию через phpinfo () или php_config, точнее, ваша установка увидит библиотеки memcache и верны ваши пути к lib.
php-config
расскажу вам больше, интересным здесь является использование пути php ini, а путь к нему php ini будет показан при использовании –configure-options, suboption –with-config-file-path (/ etc / php5 / apache2 in мой конкретный случай), а пути 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 () (просто место в файле и просмотр) также обнаруживает memcache как поддерживаемый и загруженный «поддержка memcached включена» (я специально использовал расширение memcached, а не memcache)
помните, что ваш веб-сервер может быть настроен на использование другого пути php.ini (и, следовательно, файла), чем ваша командная строка, поэтому проверьте оба. Также убедитесь, что вы размещаете расширение = memcache.so в правильном месте, так как многие дистрибутивы помещают его в /etc/php5/conf.d/memcache.ini, возможно, есть какое-то несоответствие?