GOOGLE ADS

вторник, 3 мая 2022 г.

mod_perl не может использовать многопоточный MPM без включенного ithreads Perl

Во-первых, я задавал аналогичный предыдущий вопрос несколько лет назад для более старой версии Compile Perl без потоков, но мой предыдущий ответ, похоже, сейчас не работает.

Моя установка представляет собой специально скомпилированную версию Perl.

This is perl 5, version 34, subversion 1 (v5.34.1) built for x86_64-linux
CFLAGS='-m64 -mtune=nocona'./Configure -des -A ccflags=-fPIC -Dprefix=/opt/perl

Что, насколько я понимаю, показывает, что потоки не включены (я думаю, в конце будет сказано, если это так)

Я пытался запустить это с Apache 2.4.53 (но я не думаю, что это зашло так далеко).

Параметры конфигурации Apache.

./configure --enable-proxy --enable-rewrite --enable-headers --enable-ssl --with-apr=/usr/local/apr/

Насколько я знаю, и предыдущий ответ был, если использовать Perl без потоков, вы также можете скомпилировать mod_perl без потоков, это делается с помощью

mod_perl version is 2.0.12
MP_NO_THREADS=1

Итак, моя полная команда для попытки скомпилировать mod_perl:

perl Makefile.PL MP_NO_THREADS=1 MP_APXS=/usr/local/apache2/bin/apxs

в ридми написано...

# For httpd-2.4, we can't use mpm_is_threaded(), because MPMs are loadable
# modules. We therefore treat httpd as a whole project as threaded. It is
# still possible to disable threading by using MP_NO_THREADS=1

Я также вижу немного кода в Makefile.PL.

if ($build->{MP_NO_THREADS}) {
$build_threaded = 0;
}

и я вижу, что для $build_threaded действительно установлено значение 0.

Однако, когда я
make && make test

я получил

[Thu Apr 28 12:18:02.392480 2022] [perl:error] [pid 38185:tid 140616570507840]
cannot use threaded MPM without ithreads enabled Perl

Я действительно не вижу ничего в коде (кроме проверок), который делает что-то другое в зависимости от этого кода, но я вообще не знаком с ним, поэтому, вероятно, упустил что-то важное?

I have also tried with -Uuseithreads -Uusethreads -Dusethreads=undef

Изменить: часть кода, вызывающая ошибку, выглядит так

## src/modules/perl/mod_perl.c
#ifndef USE_ITHREADS
if (modperl_threaded_mpm()) {
ap_log_error(APLOG_MARK, APLOG_ERR, 0, base_server,
"cannot use threaded MPM without ithreads enabled Perl");
exit(1);
}

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...