Не удается найти порядковый номер 372 в файле WAMP / Apache’s openssl.exe

Используемая мной среда PHP требует OpenSSL для различных функций, но при выполнении всего, что связано с OpenSSL, я получаю следующую ошибку: «Не удается найти порядковый номер 372 в DLL-файле C: \ wamp64 \ bin \ apache \ apache2.4.17 \ bin \ openssl.exe».

Я вообще не знаю, как это исправить, я уже везде искал. Буду признателен за помощь, так как я не знаю, как это исправить.

7

Решение

Чтобы решить эту проблему, необходимы две вещи:

1) Убедитесь, что у вас нет символических ссылок для libeay32.dll и ssleay32.dll в вашем каталоге Apache bin
(Например, у меня есть: C: \ wamp64 \ bin \ apache \ apache2.4.23 \ bin)

Если у вас есть символические ссылки (т. Е. Размер файла равен 0 байтам), вам необходимо загрузить dll из Apache Lounge.
Например, я взял два DLL-файла из 64-разрядной версии Apache 2.4.23, размещенной на https://www.apachelounge.com/download/

2) После того, как вы восстановите фактические файлы .dll, вы должны убедиться, что WampServer не перезаписывает их. WampServer 3 имеет скрипт конфигурации, который запускается при каждом запуске. В этом скрипте он перезапишет эти DLL-файлы символическими ссылками. Вы должны отключить эту функцию. Для этого закомментируйте ссылки на эти два файла в: C: \ wamp64 \ scripts \ config.inc.php (мои были расположены в строках 133 и 139).

Это должно позволить вам включить модуль mod_ssl в Apache. Вам также нужно будет раскомментировать «Включить conf / extra / httpd-ssl.conf» после того, как вы правильно загрузите Apache с включенным mod_ssl. (Тем не менее, вам, вероятно, придется удалить большинство из того, что там есть, и начать все сначала, поскольку в нем содержится много жестко заданных путей и ошибок).

9

Другие решения

… «Не удается найти порядковый номер 372 в DLL-файле C: \ wamp64 \ bin \ apache \ apache2.4.17 \ bin \ openssl.exe»

Я спекулирую своим PEM_SealInit или же SSL_CONF_cmd_argv из OpenSSL 1.0.2; или же ASN1_i2d_fp или же SSL_SESSION_set1_id_context из OpenSSL 1.1.0.

# OpenSSL 1.1.0
$ find $PWD -type f -iname '*.num' -exec grep " 372" {} \;
ASN1_i2d_fp                             372   1_1_0   EXIST::FUNCTION:STDIO
SSL_SESSION_set1_id_context             372   1_1_0   EXIST::FUNCTION:
...

# OpenSSL 1.0.2
$ find $PWD -type f -iname '*.num' -exec grep " 372" {} \;
PEM_SealInit                            372   EXIST::FUNCTION:RSA
SSL_CONF_cmd_argv                       372   EXIST::FUNCTION:
...

Вам нужно будет подтвердить это с помощью dumpbin или же Зависимость Уокер. Также см Как найти имя экспортируемой функции по порядковому номеру (экспорт по порядковому номеру)? Переполнение стека.


Порядковые номера созданы с использованием <openssl src>\util\mkdef.pl, Вы можете увидеть исходный код из присутствия OpenSSL на GitHub. Вот 1.0.2 а также здесь 1.1.0.

Вот главные комментарии к файлу:

#!/usr/local/bin/perl -w
#
# generate a .def file
#
# It does this by parsing the header files and looking for the
# prototyped functions: it then prunes the output.
#
# Intermediary files are created, call libcrypto.num and libssl.num,
# The format of these files is:
#
#   routine-name    nnnn    vers    info
#
# The "nnnn" and "vers" fields are the numeric id and version for the symbol
# respectively. The "info" part is actually a colon-separated string of fields
# with the following meaning:
#
#   existence:platform:kind:algorithms
#
# - "existence" can be "EXIST" or "NOEXIST" depending on if the symbol is
#   found somewhere in the source,
# - "platforms" is empty if it exists on all platforms, otherwise it contains
#   comma-separated list of the platform, just as they are if the symbol exists
#   for those platforms, or prepended with a "!" if not.  This helps resolve
#   symbol name variants for platforms where the names are too long for the
#   compiler or linker, or if the systems is case insensitive and there is a
#   clash, or the symbol is implemented differently (see
#   EXPORT_VAR_AS_FUNCTION).  This script assumes renaming of symbols is found
#   in the file crypto/symhacks.h.
#   The semantics for the platforms is that every item is checked against the
#   environment.  For the negative items ("!FOO"), if any of them is false
#   (i.e. "FOO" is true) in the environment, the corresponding symbol can't be
#   used.  For the positive itms, if all of them are false in the environment,
#   the corresponding symbol can't be used.  Any combination of positive and
#   negative items are possible, and of course leave room for some redundancy.
# - "kind" is "FUNCTION" or "VARIABLE".  The meaning of that is obvious.
# - "algorithms" is a comma-separated list of algorithm names.  This helps
#   exclude symbols that are part of an algorithm that some user wants to
#   exclude.
1

Я только что столкнулся с той же проблемой в Windows и использовании xampp вместо Wamp.

Выполнение того, что описано в комментариях на этой странице, решило это: Установка PHP cURL.

Я скопировал 3 .dll файлы из установочного каталога PHP в apache/bin каталог и перезагрузил xampp.

1
По вопросам рекламы [email protected]