Включение memcache на Mac OSX со стандартным apache и php5

Я не могу понять, как я могу включить memcache в Mac OSX для работы с apache. Я установил memcache и могу убедиться, что он работает через командную строку php.

Следующая команда:

php --ri memcache

сообщает, что memcache поддерживается.

Однако, если я загружаю локальный тестовый скрипт, который выполняет phpinfo() в моем браузере, он не сообщает, что memcahe установлен. Запуск скрипта в моем браузере, который создает экземпляр нового объекта memcache, сообщает:

Fatal error: Class ‘Memcache’ not found

Я отредактировал php.ini и добавил extensions=memcache.so

Я перезапустил apache, перейдя в «Системные настройки» -> «Общий доступ», отключив и включив общий доступ в Интернете. Я даже пытался перезапустить apache из командной строки с перезапуском sudo apachectl.

Что я мог упустить, что мешает php распознавать memcache при выполнении через браузер?

Спасибо!


person Community    schedule 15.05.2009    source источник
comment
У меня точно такая же проблема ... и так много потоков, но не работающее решение!   -  person user269867    schedule 28.04.2017


Ответы (3)


Вероятно, у вас будет расширение memcache.so, установленное в каталоге */no-debug-non-zts-*, что иногда бывает болезненным (то же самое в Linux), и php.ini может не искать в этом каталоге. Вы можете либо изменить каталог расширений в вашем php.ini (что может нарушить другие вещи), либо лучше создать символическую ссылку на файл memcache.so в каталоге */no-debug-non-zts-*.

В моем случае это было:

ln -s /usr/local/lib/php/extensions/no-debug-non-zts-20060613/memcache.so /usr/lib64/php/modules/memcache.so

В дополнение к этому проверьте права доступа к файлу memcache.so и убедитесь, что он является исполняемым (755), в моем случае это было так:

chmod 755 /usr/local/lib/php/extensions/no-debug-non-zts-20060613/memcache.so

Надеюсь, это поможет, и это мое последнее предложение :)

person earthgecko    schedule 17.05.2009
comment
Это помогло мне - проблема связана с тем, что я по-разному устанавливал вещи на свой Mac (в основном пиво, но не исключительно). В PHP CLI был загружен memcached, но под mod_php (apache) он использовал другой каталог для поиска расширений. Вы можете исправить это, скопировав / создав символическую ссылку на файл. Проверьте значение extension_dir в php -i и phpinfo() под apache. - person catchdave; 04.12.2015
comment
Мой находится в /usr/libexec/apache2/mod_socache_memcache.so. В CLI все работает нормально, но Apache не может загрузить memcache, есть идеи, почему? - person user269867; 28.04.2017

Конечно, похоже, что командная строка php и mod_php используют разные версии php.ini.

person drewish    schedule 09.12.2010

Для чего вы используете memcache? Как вы его инициируете? У вас тоже работает memcached на машине?

Это не конкретно ответ для Mac, но, надеюсь, он направит вас по маршруту бега, извините, если это покрывает очевидное.

Вам нужно, чтобы memcached работал либо на Mac, либо на другом компьютере, к которому Mac может получить доступ через порт memcached.

Здесь есть специальный документ по memcached на Mac — http://memcached.darwinports.com/

Помните, что вам также необходимо настроить php для использования memcache для всего, что вы хотите, чтобы memcache кэшировал, например. измените соответствующие настройки PHP, например, используя memcache для обработки сеансов:

session.save_handler = files
изменить на:
session.save_handler = memcache

session.save_path="tcp://:11211?persistent=1&weight=1&timeout=1&retry_interval=2"

Надеется, что это поможет в некотором роде.

http://www.of-networks.co.uk

person earthgecko    schedule 15.05.2009
comment
спасибо, но я ищу ответ, который конкретно касается моей проблемы с Mac OSX. я считаю, что мне не хватает конфигурации где-то в apache или php. на моих производственных серверах, на которых работает Ubuntu, я успешно установил memcached как для командной строки, так и для использования в Интернете. - person ; 17.05.2009
comment
Привет, Халбет. Видимо, комментарии могут быть только 600 символов (нехорошо, если вы бессвязны). Пытаюсь добавить еще один ответ. - person earthgecko; 17.05.2009
comment
Это не решает фактическую проблему, которую задает ОП. Понятно, что он пытается использовать клиент memcache, и PHP под apache не может его найти (но он установлен, потому что CLI может его найти). - person catchdave; 04.12.2015