1

Я пытаюсь скопировать производственный блок в своей лаборатории, я установил apache и пытаюсь использовать конфигурацию, скопированную из производственной среды, в результате появляется следующая ошибка:

[root @ hnm]/usr/local/apache2/bin $./apachectl -k start -f /usr/local/apache2/conf /hdm /httpd.conf httpd: синтаксическая ошибка в строке 939 файла /usr/local/apache2/conf/hdm/httpd.conf: синтаксическая ошибка в строке 29 файла /usr/local/apache2/conf/hdm/modules.conf: невозможно загрузить /usr/local/apache2/modules /mod_cwmp_22.so на сервер: ld.so .1: httpd: fatal: ошибка перемещения: файл /usr/local/apache2/modules/mod_cwmp_22.so: символ curl_easy_init: указанный символ не найден

1 ответ1

2

Давайте разберем ваше сообщение об ошибке:

Невозможно загрузить /usr /local /apache2 /modules /mod_cwmp_22.so на сервер:

Ну очевидно.

ld.so.1: httpd: fatal: ошибка перемещения:

ld.so.1 - динамический загрузчик времени выполнения. Когда вы запускаете приложение, которое динамически связано (а в Solaris ВСЕ, что динамически связано), динамический загрузчик должен включить все библиотеки. Также необходимо убедиться, что он не только имеет все файлы, но и связывает все ссылки, как код, так и данные.

file /usr /local /apache2 /modules/mod_cwmp_22.so: символ curl_easy_init: ссылочный символ не найден

Теперь поехали. Динамический загрузчик принес модуль cwmp, который зависит от curl (libcurl). Кажется, он нашел libcurl.so (иначе вы бы увидели другую ошибку), но он не может найти конкретный символ. То есть: он знает, что модулю cwmp нужен вызов функции curl_easy_init, но он не может его найти.

Я думаю, у вас есть несоответствие версии libcurl. Модуль веб-сервера был создан для одной версии libcurl, но теперь вы пытаетесь запустить другую версию в своем устройстве dev.

Идентификатор для проверки версий libcurl. возможно сделайте strings -a в libcurl как для dev, так и для prod, убедитесь, что они совпадают. Существуют и другие инструменты, такие как readelf, которые вы можете использовать для проверки, но я думаю, что вы можете скопировать libcurl из prod и поместить его где-нибудь в dev, где вы сможете его увидеть.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .