Я получаю оба модуля, перечисленные как установленные / настроенные, когда я использую:
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
Кто-нибудь знает, почему и как это произойдет? Оба файла, упомянутые выше, ОПРЕДЕЛЕНЫ. Должен ли я переместить этот вопрос на ошибку сервера?
Возможно, ваш веб-сервер использует 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» Нажмите «ОК».