Отсутствующие символы в AIX ap_cleanup_scoreboard и ap_accept_lock_mech для процесса Apache. Тем не менее, символы существуют - PullRequest
0 голосов
/ 20 ноября 2010

У меня проблема с тем, что apache не может найти определенные символы, на которые ссылается библиотека (mod_wsgi), загруженная в процесс apache.

Когда я запускаю процесс apache, я получаю эту ошибку.

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

root [zibal]% ./usr/local/apache2 / bin / apachectl перезапустите httpd: синтаксическая ошибка в строке 53 файла /usr/local/apache2/conf/httpd.conf: невозможно загрузить /usr/local/apache2/modules/mod_wsgi.so на сервер:

rtld: 0712-001 Символ ap_cleanup_scoreboard был указан в модуле /usr/local/apache2/modules/mod_wsgi.so (), но определение символа времени выполнения не найдено.

rtld: 0712-001 Символ ap_accept_lock_mechбыл указан в модуле /usr/local/apache2/modules/mod_wsgi.so (), но определение символа во время выполнения не было найдено

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Я вставляю вывод nm command в исполняемом файле apache, и эти символы, кажется, существуют.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

root[zibal]% nm ./usr/local/apache2/bin/httpd |grep ap_accept_lock_mech

ap_accept_lock_mech D 536880332

ap_accept_lock_mech d 536900392 4

ap_accept_lock_mech: G879 - 0

root / zal. zal. zal.apache2 / bin / httpd |grep ap_cleanup_scoreboard

.ap_cleanup_scoreboard T 268613428 212

ap_cleanup_scoreboard D 536890068

ap_cleanup_scoreboard d 536890068 12

* 1036_score 5board_d_d_d_d_d_d_d_d_d_d_p_d_p_d_t_F385 - 2976 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Пожалуйста, руководство.

1 Ответ

0 голосов
/ 05 февраля 2013

И вот как я смог решить эту проблему (мне пришлось применить два решения, как указано ниже).

Решение 1 (Спасибо Грэму Дамплтону)

Неизмените что-либо в Apache Code.

Перейдите в исходный код mod_wsgi.c и измените:

/ * * Очистите табло Apache, чтобы гарантировать, что любые * сегменты общей памяти или файлы с отображенной памятью * не доступныкодировать в процессах демона.* /

ap_cleanup_scoreboard (0);

до

#if 0
       /*
        * Cleanup the Apache scoreboard to ensure that any
        * shared memory segments or memory mapped files not
        * available to code in daemon processes.
        */

       ap_cleanup_scoreboard(0);
#endif

, а затем найдите:

#if !defined(AP_ACCEPT_MUTEX_TYPE)
   sconfig->lock_mechanism = ap_accept_lock_mech;
#else
   sconfig->lock_mechanism = APR_LOCK_DEFAULT;
#endif

и измените его на:

#define AP_ACCEPT_MUTEX_TYPE 1
#if !defined(AP_ACCEPT_MUTEX_TYPE)
   sconfig->lock_mechanism = ap_accept_lock_mech;
#else
   sconfig->lock_mechanism = APR_LOCK_DEFAULT;
#endif

Затем скомпилируйте mod_wsgi

Решение 2 (Спасибо Джеффу Трауику из Apache)

Извлеките архив с исходными файлами tar из каталога ..... cd в этот каталог

Найдите файл include / mpm_common.h

Change
        extern apr_lockmech_e ap_accept_lock_mech;
to
        AP_DECLARE_DATA extern apr_lockmech_e ap_accept_lock_mech;

Найдите файл include / Scoreboard.h

Change
        apr_status_t ap_cleanup_scoreboard(void *d);
to
        AP_DECLARE(apr_status_t) ap_cleanup_scoreboard(void *d);

И затем введите следующие команды

./configure
make

После этого шага в каталоге сервера будет создан файл httpd.exp, а в текущем каталоге - файл httpd

remove httpd

edit server / httpd.expи добавьте одну строку для ap_accept_lock_mech

    make
    make install (as root)

Затем соберите mod_wsgi 3.3 из Source Tarball

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...