extmail/extman登录界面无法显示的故障解决 推荐
2008-06-18 22:23
302 查看
今天在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 http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.007.tar.gz
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。
":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 http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.007.tar.gz
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。
相关文章推荐
- ubuntu 10.04升级后 无法显示登录界面的解决办法
- 解决Floodlight界面无法显示问题
- Fedora 13中无法用root用户登录图形界面解决方法
- Dynamics CRM2013/2015 插件注册工具登录后无法显示assembly列表问题的解决办法
- 【转载】解决SUSE Linux 10下无法显示故障一例
- Win7打开PLSQL无法登录显示空白提示窗问题解决
- Ubuntu14.04使用VNC无法显示图形界面问题的解决
- 解决 Ubuntu 14.04 图形界面无法正常显示 问题
- 解决“suse12无法登录,显示module is unknown”问题
- 解决linux/Ubuntu下Qt creater 界面程序在编译运行后无法显示中文或中文乱码问题!
- 关于fedora9中Qt Creator在界面编辑无法显示菜单栏的问题解决
- 虚拟机无法启动、ubuntu启动后循环返回登录界面解决方法小记
- Dynamics CRM2013/2015 插件注册工具登录后无法显示assembly列表问题的解决办法二
- 教程:Ubuntu无法进入登录界面或登录界面异常的一个解决办法
- 解决Mirage 0.9.5.2无法显示中文界面的问题
- 从action中获取的json无法显示在ext的grid中解决方法
- linux/Ubuntu下Qt creater 界面程序运行时无法正常显示中文的解决
- ubuntu12.04图形界面无法显示的解决方法
- ext 本地api document无法显示的解决方法