为了账号安全,请及时绑定邮箱和手机立即绑定

extmail/extman登录界面无法显示的故障解决

标签:
MySQL


今天在AS3上安装个extman,结果连首页都打不开,提示错误如下:

 

":flock" is not exported by the  Can't continue after import errors at /usr/local/apache2/htdocs/extman/libs/Ext/Utils.pm line 15 BEGIN failed--compilation aborted at  

/usr/local/apache2/htdocs/extman/libs/Ext/Utils.pm line 15. Compilation failed in require at /usr/local/apache2/htdocs/extman/libs/Ext/CGI.pm line 18. BEGIN failed--compilation  

aborted at /usr/local/apache2/htdocs/extman/libs/Ext/CGI.pm line 18. Compilation failed in require at /usr/local/apache2/htdocs/extman/libs/Ext/MgrApp.pm line 22. BEGIN failed- 

-compilation aborted at /usr/local/apache2/htdocs/extman/libs/Ext/MgrApp.pm line 22. Compilation failed in require at /usr/local/apache2/htdocs/extman/libs/Ext/MgrApp/Login.pm  

line 19. BEGIN failed--compilation aborted at /usr/local/apache2/htdocs/extman/libs/Ext/MgrApp/Login.pm line 19. Compilation failed in require at  

/usr/local/apache2/htdocs/extman/cgi/index.cgi line 19. 

网上搜了一下,有同样的问题,却没有人解答。自己看了看程序里面的代码

/usr/local/apache2/htdocs/extman/libs/Ext/Utils.pm line 15

这里的内容是use Fcntl qw(SEEK_CUR :flock);

查了一下,这个函数是perl的文件锁功能。但是我之前在redhat AS4和AS5的机器上都没有遇到此问题,猜想可能是perl的版本低,与extman的程序中存在不兼容的情况。于是升级perl

系统中自带的perl是5.8.0的。为了安全起见。自己源码安装一个新的perl

./Configure -des -Dprefix=/usr/local/perl  

make && make install 

安装好后运行

/usr/local/bin/perl -V

来看看,确认版本是否正确。

[@131.163 httpd-2.2.8]# /usr/local/bin/perl -V 

Summary of my perl5 (revision 5 version 10 subversion 0) configuration: 

  Platform:

安装好后需要安装DBI,DBD等perl模块,可以用在线安装的方法。

/usr/local/bin/perl -MCPAN -eshell

然后在cpan>>提示符下输入install DBI即可安装DBI模块,安装其他模块也类似,需要注意的是某些模块的名称是DBD::mysql这样的格式,不要忘记中间的两个冒号

安装DBD::mysql的时候需要mysql的库文件和头文件,对于rpm包的mysql可以安装mysql-devel来解决

如果mysql是源码安装的,需要手动指定库文件的路径。这时用在线安装的方法无法成功。只能退出后手动安装。

wget [url]http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.007.tar.gz[/url] 

tar zxvf DBD-mysql-4.007.tar.gz 

cd DBD-mysql-4.007 

usr/local/bin/perl Makefile.PL \ 

--cflags=-I/usr/local/mysql/include/mysql \ 

--libs="-L/usr/local/mysql/lib/mysql -lmysqlclient -lz" \ 

--mysql_config=/usr/local/mysql/bin/mysql_config 

make 

make install 

 

 

这里有3个参数来指定mysql的头文件,库函数文件,以及配置文件的位置。

安装完成后用/usr/local/bin/perdoc -l DBD::mysql看看是否正确安装了

apache以前编译的时候没有打开suexec功能。在编译的时候在configure后面加上--enable-suexec参数,可以打开suexec功能。但是我不想重新编译

那么可以用模块的形式来增加这个功能。

首先是找到原来编译apache的源码目录,如果没有了,可以重新下载一个相同版本的apache的源码解压缩开

先进行清理

make distclean

然后找一下mod_suexec.c的目录

find . -name "mod_suexec.c" 

./modules/generators/mod_suexec.c

切换到mod_suexec.c的目录中执行:

cd ./modules/generators/mod_suexec.c 

/usr/local/apache2/bin/apxs -c mod_suexec.c 

/usr/local/apache2/bin/apxs -i -a -n suexec ./.libs/mod_suexec.so 

退回到apache2的源码目录中执行:

#./configure --enable-suexec --with-suexec-caller=daemon

(注。这里不要忘记了--with-suexec-caller=daemon,否则到后面你又要重新来过)

#make suexec 

#make install-suexec 

此时mod_suexec.so就已经生成并且被安装到apache的modules目录下了,并且httpd.conf中也自动添加了

LoadModule suexec_module              modules/mod_suexec.so

检查一下上述改动是否已经成功

[@131.163 httpd-2.2.8]# ls /usr/local/apache2/modules/ -l 

total 36 

-rw-r--r--    1 root     root         8998 Jun 18 17:35 httpd.exp 

-rwxr-xr-x    1 root     root        22509 Jun 18 17:38 mod_suexec.so

如果没有mod_suexec.so,则需要手动从源码目录中将它复制过去,如果源码目录中没有,则要检查上面的编译过程中是否正确。

[@131.163 httpd-2.2.8]# grep "mod_suexec.so" /usr/local/apache2/conf/httpd.conf

LoadModule suexec_module      modules/mod_suexec.so

如果没有这一行则手动添加到httpd.conf中

重启apache就可以启用suexec了! 这里建议用apachectl stop;apachectl start而不是apachectl restart的方法,后者有可能导致apache无法正常启动

前面perl的新版本安装好了。那么如何让它发挥作用呢,方法很多了,有人喜欢把/usr/bin/perl删除,然后做一个/usr/local/bin/perl->/usr/bin/perl的软链接

但是我是在生产环境上,为了不干扰原来的程序。就辛苦一下吧。进入到extman的cgi目录下,打开出现文章开头错误提示的cgi文件,如index.cgi

修改第一行

#!/usr/bin/perl

这里就是定义的perl的解释器。把这个改成我们自己编译的perl的版本#!/usr/local/bin/perl

然后再次刷新页面。终于可以成功显示出extman的界面了。(眼泪哗哗的)

对于其他报错的页面都可以同样的办法。如果要看extman的图形日志还需要安装rrdtool。

©著作权归作者所有:来自51CTO博客作者coolerfeng的原创作品,如需转载,请注明出处,否则将追究法律责任

perlextmailextmanlinux


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消