Каковы конкретные шаги для включения расширения ZeroMQ для PHP 7.3?

Я пытаюсь включить расширение ZeroMQ для PHP в Windows.

У меня есть установка PHP 7.3 ZTS на моем x64 Windows 10. Поскольку официальный zeromq/php-zmq больше не поддерживается, я пытался использовать последний выпуск из alexat/php-zmq, но безрезультатно. Вот что я пытался сделать:

  1. Загрузите и распакуйте последний выпуск ZeroMQ.
  2. Скопируйте libzmq.dll в php7.3.x и в php7.3.x/ext.
  3. Загрузите и распакуйте расширение php-zmq.
  4. Скопируйте php_zmq.dll в php7.3.x/ext.
  5. Добавьте extension=zmq к моему php.ini (которое я получил от php --ini).

Последующие php -v говорят мне, что PHP Warning: PHP Startup: Unable to load dynamic library 'zmq' (tried: php7.3.x\ext\zmq (...), php7.3.x\ext\php_zmq.dll (The specified module could not be found.)) (выделено мной). Я также пытался изменить extension_dir, но он указывает на правильный каталог.

В ответ на предупреждение о запуске я попытался изменить php.ini на extension=zmq123456, которого, конечно, не было в каталоге расширений, однако PHP приветствовал меня (правильно, на этот раз) тем же предупреждением.

Некоторые предложили, чтобы мой был дубликатом другого вопроса, однако в моем случае PHP неправильно действует как библиотека расширений php_zmq.dll даже не присутствует там, где ожидалось, хотя очевидно и проверяемо, что она есть. Можете ли вы увидеть проблему и, возможно, подробно описать, как мне правильно включить расширение ZeroMQ?


person Kubo2    schedule 27.12.2019    source источник
comment
Отвечает ли это на ваш вопрос? Расширение PHP ZMQ: невозможно загрузить динамическую библиотеку   -  person Rain    schedule 27.12.2019
comment
@ Дождь, нет, это не так. Я пробовал различные комбинации версий DLL, но плохо представляю, как динамически загружаемые библиотеки работают с точки зрения зависимостей. Возможно, мне следует немного поработать в этом направлении, чтобы пролить свет на то, как эти расширения PHP и скомпилированные библиотеки настроены.   -  person Kubo2    schedule 27.12.2019
comment
избавиться от префикса lib. libzmq.dll и php_zmq.dll должны быть zmq.dll   -  person Alex Barker    schedule 28.12.2019
comment
Если это не сработает, проверьте dll с помощью обходчика зависимостей, чтобы узнать, отсутствуют ли у вас библиотеки времени выполнения.   -  person Alex Barker    schedule 28.12.2019
comment
@AlexBarker Ничего не сработало. Раньше я также проверял обходчик зависимостей, однако я не совсем уверен, что я должен искать, поскольку при сканировании DLL другого рабочего расширения ходок показывал в два раза больше красных сообщений об ошибках.   -  person Kubo2    schedule 28.12.2019
comment
Загрузки PHP с windows.php.net содержат deplister.exe; так что просто запустите deplister php_zmq.dll, чтобы увидеть, какие другие библиотеки DLL ему требуются, и можно ли их найти.   -  person cmb    schedule 28.12.2019
comment
@cmb Деплистер - действительно удобный инструмент. Я узнал, что библиотека должна иметь очень конкретное имя, чтобы ее можно было найти в каталоге PHP. php -m теперь отображает модуль как zmq, и я могу использовать пользовательский API расширения почти безупречно — только когда я пытаюсь использовать любой из задокументированных шаблонов обмена сообщениями, при публикации/запросе/отправке не возникает никаких ошибок, в то время как принимающая сторона зависает на неопределенный срок. и ни одно сообщение не проходит. Я понятия не имею, где искать ошибки в этом случае. Есть ли место, где PHP регистрирует внутренние ошибки, которые могут возникнуть?   -  person Kubo2    schedule 02.01.2020
comment
вы нашли какое-нибудь решение?   -  person Ahmed Alhallag    schedule 19.07.2021