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 много раз и даже перезапустил машину.

Кто - нибудь знает , почему модули / расширения отображаются в командной строке , но не в моей конфигурации файл ( PHP . INI ) Путь : / и т.д. Loaded Configuration File : / частный / и т.д. / PHP . ini ? Я буквально тупик, после 3 часов работы в Интернете, я готов сдаться.

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

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

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

php,memcached,

6

Ответов: 5


4

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

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

НТН

C.


3

потому что в обеих версиях используется другое phpinfo()
место вашего php.ini в местоположении, указанном в outpop phpinfo ()


2

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

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


1

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


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

PHP, Memcached,
Похожие вопросы