我正在尝试安装mod_perl 2.0.10,以与新的apache 2.4实例一起使用。我有Apache 2.4.26单独运行,但是我还需要安装MOD_PERL以进行几个模块工作。
这是一个问题:mod_perl总是未能通过其测试声称:
Syntax error on line 82 of .../t/conf/httpd.conf: Cannot load .../src/modules/perl/mod_perl.so into server: .../src/modules/perl/mod_perl.so: undefined symbol: mg_free_type
我可以在此处找到的唯一信息:安装mod_perl2时错误。不幸的是,它没有解决问题。
使用CentOS版本6.8(最终(x86_64 x86_64 x86_64 gnu/linux
更多的日志:
> make test
cd "src/modules/perl" && make
make[1]: Entering directory `/software/apa/mod_perl/mod_perl-2.0.10/src/modules/perl'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/software/apa/mod_perl/mod_perl-2.0.10/src/modules/perl'
...
make[1]: Leaving directory `/software/apa/mod_perl/mod_perl-2.0.10/xs'
/usr/bin/perl -Iblib/arch -Iblib/lib
t/TEST -clean
[warning] setting ulimit to allow core files
ulimit -c unlimited; /usr/bin/perl /software/apa/mod_perl/mod_perl-2.0.10/t/TEST -clean
APACHE_TEST_APXS= APACHE_TEST_GROUP= APACHE_TEST_HTTPD= APACHE_TEST_PORT= APACHE_TEST_USER=
/usr/bin/perl -Iblib/arch -Iblib/lib
t/TEST -bugreport -verbose=0
[warning] setting ulimit to allow core files
ulimit -c unlimited; /usr/bin/perl /software/apa/mod_perl/mod_perl-2.0.10/t/TEST -bugreport -verbose=0
/software/apa/apa24/bin/httpd.prefork -d /software/apa/mod_perl/mod_perl-2.0.10/t -f /software/apa/mod_perl/mod_perl-2.0.10/t/conf/httpd.conf -D APACHE2 -D APACHE2_4 -D PERL_USEITHREADS
using Apache/2.4.26 (prefork MPM)
waiting 300 seconds for server to start: .httpd.prefork: Syntax error on line 82 of /software/apa/mod_perl/mod_perl-2.0.10/t/conf/httpd.conf: Cannot load /software/apa/mod_perl/mod_perl-2.0.10/src/modules/perl/mod_perl.so into server: /software/apa/mod_perl/mod_perl-2.0.10/src/modules/perl/mod_perl.so: undefined symbol: mg_free_type
[ error]
server has died with status 255 (t/logs/error_log wasn't created, start the server in the debug mode)
sh: line 1: 3359 Terminated /usr/bin/perl /software/apa/mod_perl/mod_perl-2.0.10/t/TEST -bugreport -verbose=0
make: *** [run_tests] Error 143
当他们在mod_perl 2.0.10:https://github.com/apache/mmod_perl/commit/82827132efd325c25cc413c41bbb61bb61333333333333.dafafly
中添加了Perl版本5.22的支持时,引入了此错误。 47E167A883BE1B
,然后在2018年1月4日在MOD_PERL补丁中修复(2.0.11-DEV(:https://github.com/apache/mod_perl/commit/f4d886fdf79d79d54a0647336b5623b5623b840a053eab
要解决此问题,您必须从mod_perl 2.0.11-dev(或中继版本(的此提交的来源进行编译,以解决问题,如果您有perl< = 5.13.6,或者如果您可以将Perl升级到版本> 5.13.6您可以使用mod_perl 2.0.10。
编译Perl版本5.13.6在此Perl commit中引入的Perl的更改:https://perl5.git.perl.org/perl.git/commit/d908838680ec40ee85f59ee66f59e66f5f56a2225f9b4
src/modules/perl/modperl_env.c中的mod_perl fix(在最后2.0.11-dev中(使用mg_free的上下文用法来解决问题:
#if MP_PERL_VERSION_AT_LEAST(5, 13, 6)
mg_free_type((SV*)ENVHV, PERL_MAGIC_env);
#else
mg_free((SV*)ENVHV);
#endif
我通过升级到perl 5.14.0或更新来解决此问题。
在Perl文档中,mg_free_type
首先出现在版本5.14.0中。您可以在5.12.4中没有列出的"魔法功能"下看到,但在5.14.0
我不确定这是否是正确的解决方案,因为mod_perl2.0列出了perl 5.6.1作为最小版本: https://perl.apache.org/docs/2.0/user/install/install.html#item_Perl