2016-08-23 4 views
2

У меня возникли проблемы с установкой расширения memcached для php.Как установить расширение PHP 7 «memcached» на Windows

В настоящее время с помощью:

ОС: Windows 10 x64
PHP: 7.0.1 через XAMPP
Apache: 2.4.18 (Win32)

Я успешно установлен Memcached в C:/memcached в служба работает.

Но проблема возникает при попытке добавить расширение php memcache. Я пробовал множество версий php_memcache.dll и не работал.
я включить расширение в php.iniextension=php_memcache.dll

Когда я бегу php -m Memcache нет в списке, и в верхней части я получаю ошибку:

PHP Startup: Unable to load dynamic library 'C:\xampp\php\ext\php_memcache.dll'
- The specified module could not be found.

И когда я пытаюсь запустить тест. php для инициализации memcache i recive Class not found exception

Это огромная проблема, потому что мне это нужно для запуска тестов на селен.

+1

Вы проверили этот путь, чтобы убедиться, что файл существует? Поскольку PHP говорит, что это не – Machavity

+1

https://github.com/nono303/PHP7-memcahe-dll –

+0

@Spartan Спасибо за ответ, эта ссылка кажется весьма полезной. Но, пожалуйста, вы могли бы дать мне указатели (это мой первый раз, добавив расширение). Я должен просто добавить DLL-файл в 'php/ext' и добавить строку в' php.in'? Я сделал это, и проблема остается прежней. – Mihailo

ответ

4

Служба memcached фактически не устанавливает расширение PHP memcached для вас. Он устанавливает только сервер memcached, используемый для хранения вашего кеша.

Сначала необходимо загрузить Windows DLL from the PECL repository (нажмите на синюю ссылку Windows DLL). Затем вы должны добавить строку extension=php_memcache.dll в правильный файл php.ini для вашего SAPI. Также обратите внимание, что DLL-файл расширения должен быть помещен в правильный путь для вашей установки XAMPP.

Для Apache просто создайте сценарий в корне вашего документа с помощью строки <?php phpinfo(); и попробуйте загрузить его в своем веб-браузере. Вы должны увидеть строку с надписью Загруженная конфигурация (php.ini), которая дает вам полный путь к загруженному файлу php.ini. В Windows путь может выглядеть иначе, чем указано в phpinfo(), если вы установили PHP через что-то вроде XAMPP. Поэтому вам может понадобиться полагаться на XAMPP, чтобы найти правильный файл php.ini.

Для CLI SAPI вы можете использовать php.exe --ini, чтобы сделать то же самое. Опять же, вам может потребоваться полагаться на пакет XAMPP, если он изменил ваш путь конфигурации (, поскольку это директива времени компиляции).

После внесения изменений в php.ini вам нужно будет перезапустить PHP, чтобы изменения вступили в силу.


Поскольку вы используете PHP 7 на Windows, вероятно, это также важно отметить, что скомпилированный DLL из PECL не может реально работать под Apache для Windows, потому что вы, скорее всего, используя резьбовую SAPI. Поэтому убедитесь, что вы загружаете правильную версию. Насколько я могу судить, эта версия компилируется только для работы с PHP 5.6. Альтернатива github для PHP 7, доступная по адресу https://github.com/nono303/PHP7-memcahe-dll, как упоминается в комментариях, тестируется под безопасным потоком. Таким образом, вы можете только получить эту работу для ваших сценариев CLI в Windows.

+0

Большое вам спасибо за то, что нашли время, чтобы написать такой подробный ответ. Да, я знаю, что это не так, и я попытался загрузить каждый файл .dll, который они предложили в PECL, но безрезультатно. Расширение = php_memcache.dll было добавлено в моем * php.ini *, как указывали руководства. И файл dll был помещен вместе с другими 'C: \ xampp \ php \ ext'. Но STILL memcache не находится в списке 'phpinfo()' или 'php -m'. Список 'php -m' все еще дает указанную ошибку. + Я сделал перезапуск * Apache * после внесения изменений. – Mihailo

+1

Ahhh Я не пробовал ВСЕ DLL-файлы из этого хранилища ... ** x86 ts ** сделал трюк. Большое спасибо @Sherif:] – Mihailo

+0

Отлично, рад, что это сработало. Попытка ошибочной версии, как правило, является одной из наиболее распространенных ошибок, с которыми сталкиваются люди в этой проблеме в Windows. – Sherif