PHP Extension (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) с установкой по умолчанию apache & php. Кроме того, я memcached работает как демон на 127.0.0.1:11211 и libmemcache, как требуется библиотекой php-memcached. Я перезапустил apache много раз и даже перезапустил машину.

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

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

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

ОБНОВИТЬ:

Apache не загружает расширение.

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

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

Solutions Collecting From Web of "PHP Extension (memcache | memcached) не отображается в phpinfo (), но отображается в php -m и php -i?"

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

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

НТН

C.

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

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

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

Я напутал этот пост и имел ту же самую проблему с расширением в моем php -i, но не в phpinfo() . Моя проблема была разрешена из-за selinux на машине CentOS . Мне пришлось изменить права собственности и разрешения, и теперь он работает так, как ожидалось.

Задайте путь php в переменных среды, как указано ниже. Щелкните правой кнопкой мыши вкладку «Мой компьютер». Вкладка «Дополнительно»> «Переменные среды». В разделе «Системные переменные» прокрутите страницу вниз, чтобы найти «Путь», выберите и нажмите «Изменить». Добавьте путь к вашей установке php в конце (убедитесь, что она предшествует полуточке «;»). Пример: «; C: \ php7» Нажмите «ОК».