Apache 安装mod_perl2时出错

Apache 安装mod_perl2时出错,apache,perl,centos,mod-perl2,Apache,Perl,Centos,Mod Perl2,我正在尝试使用以下配置安装mod_perl2:OS:CentOS 5.5版(最终版)Uname-结果:x86_64 x86_64 x86_64 GNU/LinuxPerl版本:为x86_64-Linux-thread-multi构建的v5.8.8apache版本:apache/2.2.3我已从 当我尝试运行“perl Makefile.PL MP_APXS=/usr/local/httpd/bin/APXS”时,它给出了以下输出: 子程序集\u版本在./Makefile.PL第137行重新定义。

我正在尝试使用以下配置安装mod_perl2:
OS:CentOS 5.5版(最终版)
Uname-结果:x86_64 x86_64 x86_64 GNU/Linux
Perl版本:为x86_64-Linux-thread-multi构建的v5.8.8
apache版本:apache/2.2.3
我已从
当我尝试运行“perl Makefile.PL MP_APXS=/usr/local/httpd/bin/APXS”时,它给出了以下输出:

子程序集\u版本在./Makefile.PL第137行重新定义。
[信息]正在生成脚本t/TEST
[信息]正在生成脚本。/t/cgi-bin/cookies.pl
[info]正在生成脚本。/t/cgi-bin/next\u-available\u-port.pl
正在检查Cwd…正常
正在检查文件::Spec…ok
[信息]正在生成脚本t/TEST
生成Unix样式的生成文件
为mod_perl2写入Makefile
[警告]mod_perl dso库将作为mod_perl构建。因此
[警告]您需要将以下内容添加到httpd.conf:
[警告]
[警告]加载模块perl\u模块模块/mod\u perl.so
[警告]
[警告]根据您的构建,mod_perl可能不存在于
[警告]模块/目录。

[警告]检查
[警告]
[警告]$/usr/local/httpd/bin/apxs-q LIBEXECDIR
[警告] [警告]并相应调整LoadModule指令。

“make”命令运行后,出现以下错误:
modperl_env.c:在函数“modperl_env_magic_local_all”中:
modperl_env.c:544:错误:“MGf_LOCAL”未声明(此函数首次使用)
modperl_env.c:544:error:(每个未声明的标识符只报告一次
modperl_env.c:544:错误:对于它出现的每个函数。)
modperl_env.c:在顶层:
modperl_env.c:642:警告:结构初始值设定项中的元素过多
modperl_env.c:642:警告:(接近“MP_vtbl_env”的初始化)
modperl_env.c:在函数“modperl_env_init”中:
modperl_env.c:661:警告:传递“Perl_mg_find”的参数2将丢弃指针目标类型的限定符
modperl_env.c:673:警告:函数“mg_free_type”的隐式声明
modperl_env.c:678:错误:“MGf_LOCAL”未声明(此函数首次使用)
modperl_env.c:在函数“modperl_env_unload”中:
modperl_env.c:690:警告:传递“Perl_mg_find”的参数2将丢弃指针目标类型的限定符
make:*[modperl\u env.lo]错误1
make:离开目录“/opt/mod_perl-2.0.10/src/modules/perl”
make::
[modperl_lib]错误2


非常感谢您的帮助,如果我问错了什么,请进一步指导(请不要投反对票:)

您为什么要构建自己的mod_perl版本?Centos有一个mod_perl的预构建版本,它将与已经安装的预构建版本的perl一起使用

$ sudo yum install mod_perl

(当然,如果您不使用系统Perl,这不会有帮助)

为什么您要尝试构建自己的mod_Perl版本?Centos有一个mod_perl的预构建版本,它将与已经安装的预构建版本的perl一起使用

$ sudo yum install mod_perl

(当然,如果您不使用系统Perl,这将不会有帮助)

不知道如何安装,但是mod_Perl-2.0.6已成功安装。mod_perl-2.0.10:(

不知道如何安装,但是mod_perl-2.0.6已经成功安装。mod_perl-2.0.10:(

这个常量在perl 5.9.3中引入,mod_perl从2.0.10开始使用它

要克服这一问题,必须修改mod_perl以使用perl版本的此常量条件:

diff -ruw mod_perl-2.0.11/src/modules/perl/modperl_env.c mod_perl-2.0.11.patched/src/modules/perl/modperl_env.c
--- mod_perl-2.0.11/src/modules/perl/modperl_env.c      2017-12-06 11:08:55.000000000 -0500
+++ mod_perl-2.0.11.patched/src/modules/perl/modperl_env.c      2018-03-27 15:02:14.174790000 -0400
@@ -541,7 +541,9 @@
     nmg = sv_magicext(nsv, mg->mg_obj, mg->mg_type, &MP_vtbl_env, (char*)NULL, 0);
     nmg->mg_ptr = mg->mg_ptr;
     nmg->mg_flags |= MGf_COPY;
+#if MP_PERL_VERSION_AT_LEAST(5, 9, 3)
     nmg->mg_flags |= MGf_LOCAL;
+#endif

     return 1;
 }
@@ -679,7 +681,9 @@
     /* Add our version instead */
     mg = sv_magicext((SV*)ENVHV, (SV*)NULL, PERL_MAGIC_env, &MP_vtbl_env, (char*)NULL, 0);
     mg->mg_flags |= MGf_COPY;
+#if MP_PERL_VERSION_AT_LEAST(5, 9, 3)
     mg->mg_flags |= MGf_LOCAL;
+#endif
 }

 void modperl_env_unload(pTHX)

这个常量在perl 5.9.3中引入,mod_perl从2.0.10开始使用它

要克服这一问题,必须修改mod_perl以使用perl版本的此常量条件:

diff -ruw mod_perl-2.0.11/src/modules/perl/modperl_env.c mod_perl-2.0.11.patched/src/modules/perl/modperl_env.c
--- mod_perl-2.0.11/src/modules/perl/modperl_env.c      2017-12-06 11:08:55.000000000 -0500
+++ mod_perl-2.0.11.patched/src/modules/perl/modperl_env.c      2018-03-27 15:02:14.174790000 -0400
@@ -541,7 +541,9 @@
     nmg = sv_magicext(nsv, mg->mg_obj, mg->mg_type, &MP_vtbl_env, (char*)NULL, 0);
     nmg->mg_ptr = mg->mg_ptr;
     nmg->mg_flags |= MGf_COPY;
+#if MP_PERL_VERSION_AT_LEAST(5, 9, 3)
     nmg->mg_flags |= MGf_LOCAL;
+#endif

     return 1;
 }
@@ -679,7 +681,9 @@
     /* Add our version instead */
     mg = sv_magicext((SV*)ENVHV, (SV*)NULL, PERL_MAGIC_env, &MP_vtbl_env, (char*)NULL, 0);
     mg->mg_flags |= MGf_COPY;
+#if MP_PERL_VERSION_AT_LEAST(5, 9, 3)
     mg->mg_flags |= MGf_LOCAL;
+#endif
 }

 void modperl_env_unload(pTHX)

上述Mathieu Carbonneaux补丁的修改/增强版于2019年10月8日提交给mod_perl SVN存储库:


使用此修补程序,mod_perl 2.0.11将使用perl编译和安装上述Mathieu Carbonneaux修补程序的修改/增强版本,并于2019年10月8日提交给mod_perl SVN存储库:


使用此修补程序,modÜu perl 2.0.11将使用perl编译和安装。不要发布日志截图。复制并粘贴实际文本。@SinanÜnür删除的图像我猜您的Apache库是不兼容的版本。不要发布日志截图。复制并粘贴实际文本。@SinanÜnür删除的图像我猜您的Apache库是不兼容的re是一个不兼容的版本。您的
yum
配置一定有问题。Centos肯定有一个mod_perl的RPM。请参阅RPM安装成功,但apache无法找到mod_perl。请提供当前情况的详细信息。或者,没有成功…安装了RPM mod_perl,但apache无法找到e mod_perl.so,从源代码或CPAN外壳来看,上述错误保持不变:(您的Apache是否来自rpm?您的
yum
配置一定有问题。Centos肯定有一个用于mod_perl的rpm。请参阅rpm安装成功,但Apache无法找到mod_perl。请提供当前情况的详细信息,或者说没有成功…安装了rpm mod_perl,但Apache无法找到t。)他mod_perl.so,从源代码或cpanshell上面的错误都是一样的:(你的Apache是从rpm来的吗?