Расширение PHP (memcache|memcached) не показывающий в phpinfo (), но показывающий в php-m и php-i?

Я получаю оба модуля, перечисленные, как установлено / настроенный, когда я использую:

php -m

или если я использую:

php -i

но когда я использую:

$m = new Memcache;
// or
$m = new Memcache();
// or
$m = new Memcached();
//or 
$m = new Memcached;

Я получаю следующую ошибку:

Fatal error: Class 'Memcached' not found

Я работаю на Mac - OS X (10.5.7) с установкой по умолчанию апача и php. Кроме того, у меня есть memcached, работающий как демон на 127.0.0.1:11211 и libmemcache как требуется php-memcached библиотекой. Я перезапустил апачские тонны времен и даже сделал перезапуск машины.

Кто-либо знает, почему модули/расширения обнаруживаются в командной строке, но не в моем phpinfo ()? Я буквально озадачен, после 3 часов поиска с помощью Google я примерно готов сдаться.

Кроме того, отметьте, мой phpinfo () производит мои ini файлы следующим образом, И они - оба тот же самый файл:

Configuration File (php.ini) Path:  /etc
Loaded Configuration File:  /private/etc/php.ini 

ОБНОВЛЕНИЕ:

Apache не удается загрузить расширение.

[Пятница 14 мая 4:22:26 2010] [предупреждает] Init: Кэш Сессии не настроен [подсказка: SSLSessionCache] Предупреждение PHP: Запуск PHP: Не мог загрузить динамическую библиотеку '/usr/lib/php/extensions/no-debug-non-zts-20060613/memcached.so' - (пустой указатель) в Неизвестном на строке 0 Предупреждений PHP: Запуск PHP: Не мог загрузить динамическую библиотеку '/usr/lib/php/extensions/no-debug-non-zts-20060613/memcache.so' - (пустой указатель) в Неизвестном на строке 0

Кто-либо знает, почему или как это произошло бы? Оба из файлов, на которые ссылаются выше ОПРЕДЕЛЕННО, там. Я должен переместить этот вопрос отказу сервера?

6
задан hakre 15 December 2012 в 17:57
поделиться

3 ответа

Я подозреваю, что проблема связана с разрешениями. Когда вы запускаете php из командной строки, он запускается от имени вызывающего его пользователя. Когда он запускается как модуль apache, он запускается как «никто».

Я предполагаю, что файл memcached.so или каталог, в котором он находится, не имеют надлежащих разрешений.

2
ответ дан 16 December 2019 в 21:36
поделиться

поскольку обе версии используют разные php.ini
, поместите ваш php.ini в место, указанное в выходном файле phpinfo ()

3
ответ дан 16 December 2019 в 21:36
поделиться

Ваш веб-сервер, вероятно, использует mod_php, который представляет собой отдельный фрагмент кода от автономного интерпретатора (CLI). Если они оба используют один и тот же ini-файл, а расширение memcache настроено в ini-файле, то это звучит так, как будто по какой-то причине mod_php не загружает расширение - проверьте error_log вашего веб-сервера на наличие ошибок запуска.

Возможно, что mod_php был скомпилирован без поддержки memcache (большинство расширений должны иметь файл-заглушку, связанный с кодом php, хотя основная часть кода не связана до времени выполнения). Или это может быть проблема с разрешениями для общего объектного файла. Или ваш веб-сервер может работать под управлением chroot и не может найти расширение (что также означает, что, хотя файлы ini имеют одинаковый путь, это относительно разных корней).

HTH

C.

4
ответ дан 16 December 2019 в 21:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: