尝试执行perl脚本时遇到以下错误(对于LVM备份)。 看到一些DBD模块丢失。 我将如何parsing它? [root@localhost mylvmbackup-0.13]# ./mylvmbackup 20120804 02:26:06 Info: Connecting to database… Uncaught exception from user code: install_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC (@INC contains: /usr/share/mylvmbackup /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8 .) at (eval 17) line 3. Perhaps the DBD::mysql perl module hasn't been fully installed, or perhaps the capitalisation of […]
我正在运行tomcatserver,我需要执行一个Perl脚本。 我在网上search,发现我需要在conf / web.xml中取消注释 <servlet> <servlet-name>cgi</servlet-name> <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>6</param-value> </init-param> <init-param> <param-name>cgiPathPrefix</param-name> <param-value>WEB-INF/cgi</param-value> </init-param> <load-on-startup>5</load-on-startup> </servlet> 我这样做,并重新启动服务器。 现在我无法连接到服务器。 我经历了很多如何上网,终于find了这个tomcat的cgi 。 我无法到达服务器。 它显示一个空白页面。 时间紧迫。
我在Debian Wheezy服务器上有几个由Apache 2.2.22服务的虚拟主机。 一些虚拟主机是Catalyst应用程序; 所有虚拟主机都使用mod_fastcgi和mod_suexec运行。 每个虚拟主机都configuration为使用不同的ErrorLog 。 当Catalyst应用程序中的代码写入stderr(例如,调用warn )时,消息将在主要的Apache错误日志中结束,而不是在<VirtualHost>块中指定的日志中。 它没有以时间戳或任何其他信息为前缀。 不过,如果我把这个简单的fastcgi脚本叫做 #!/usr/bin/perl use FCGI; my $request = FCGI::Request(); while($request->Accept() >= 0) { print("Content-type: text/html\r\n\r\n"); warn 'Hello!'; } Hello! 确实结束在正确的地方,正确的前缀: [Thu Jul 10 14:40:18 2014] [error] [client xxxx] FastCGI: server "/data/vhost/wibble/docs/test.cgi" stderr: Hello! at test.cgi line 9., referer: http://my.test.site/ 我怎么能得到催化剂网站写他们的stderr到正确的日志? 唯一相关的问题是我可以find这个 – 类似的问题,但不同的模块( mod_perl ),可悲的是没有答案。 我也发现这个Apache错误报告 […]
我正在做一个Apache的可移植安装来运行Bugzilla。 这个安装有一个Perl的可移植版本,这是我想mod_cgi使用的一个。 但是,mod_cgi没有任何方式来configuration预期的二进制文件(或每个文件types的二进制文件),所以它依赖于shebang来知道要执行什么。 我的问题是这样的:Bugzilla的perl文件有一个指向#!/usr/bin/perl -T的shebang,因为我在Windows上(不幸的是没有任何事情可以做到) ,我想使用特定的Perl发行版对于服务器,我需要修改shebang。 我知道我可以事先运行一个Perl脚本,只是用指向正确的二进制文件replace所有的shebang,但我更喜欢一个更强大的解决scheme。 我想到filter和mod_lua,但Apache和它的模块似乎没有钩子或指令,允许在发送到cgi进程之前处理文件。 他们只能处理客户端发送的请求或最终的输出,然后再发送回客户端。 在发送到cgi进程之前,有没有办法使用Apache或模块处理文件? 有没有办法让cgi进程认为我的目标perl实际上在/usr/bin/perl ?
我正在尝试使用Perl模块Net :: Appliance :: Session ssh进入思科交换机,但由于预期提示的性质,我遇到了问题。 开关提示符如下 用户名: 所以当基本的用户名提示符预期不会被正确地返回。 看Net :: Appliance :: Session的文档,它谈到自定义提示,但我不确定如何实现它。 它指的是短语手册。 如果任何人有这样的例子可以实现,这将不胜感激。 为了避免交叉发帖,我昨天在perlmonks上问了一个类似的问题,这里是链接http://perlmonks.com/?node_id=1199230 提前致谢。 代码示例— #!/usr/bin/perl use warnings; use strict; use Net::Appliance::Session; my $host = '<my_host>'; my $user = '<my_user>'; my $pass = '<my_password>'; my $session = Net::Appliance::Session->new( personality => 'cisco', host => $host, transport => 'SSH', ); $session->connect( username => […]
我已经3天了,通常会遇到一个Storage.pm的问题,“二进制映像v18.86大于2.7”。 我已经尝试了不同的Bugzilla的:3.0.8,3.2.4,3.4rc1。 接下来我将尝试不同的Perl,(现在使用5.10.0.4便携版), 我不想去旧版本的MySQL(5.1.36社区),所以接下来我将尝试PostgreSQL 8.4。 我会随时更新。 我想问这里,因为这是一些常见的平台,也许有人有它的工作。 PS:Windows XP,Abyss Web Server X1(尽pipe我甚至不能运行perl check-setup.pl) 更新:我迄今为止没有结果的旅程的一个编年史 。
我在一台服务器上有多个开发人员,每个人都有自己的SVN副本。 我希望每个开发者都有自己的子域指向他们自己的代码库副本。 我尝试把PerlSwitches放在里面,但似乎没有工作。 例如 <VirtualHost dev1.devserver.com> PerlSwitches -I/home/dev1/www -w -T <Location /webapp/> SetHandler perl-script PerlHandler WebApp::Handler </Location> </VirtualHost> <VirtualHost dev2.devserver.com> PerlSwitches -I/home/dev2/www -w -T <Location /webapp/> SetHandler perl-script PerlHandler WebApp::Handler </Location> </VirtualHost> 谢谢。
我有一个应用程序,目前运行在perl5.8,我想升级到perl5.10,如果不是5.11。 唯一的问题是,我们需要将Ubuntu LTS部署到任何地方。 从我读过的安装Perl 5.10上安装perl 5.8可以导致加载错误版本的模块和其他混淆的问题。 是否有任何build议的方式来获得LTS的现代Perl?
我的设置如下:我有一个运行不同虚拟主机的Apache2networking服务器,一个虚拟主机用于生产网站,另一个虚拟主机用于登台/预览系统。 这两个虚拟主机有不同的DocumentRoot和不同的(Perl)CGI文件夹。 每个虚拟主机使用的模块应该在不同的目录中,所以我做了以下几点: <VirtualHost…> ServerName production SetEnv PERL5LIB /home/production/modules </VirtualHost> <VirtualHost…> ServerName staging SetEnv PERL5LIB /home/staging/modules </VirtualHost> 不过,我只注意到,在我的Perl CGI脚本中,两条path都被填充到我的@INC中,所以我不能将生产模块与生产模块分开,例如SetEnv指令不仅限于单个虚拟主机,而且似乎全球工作。 我该如何解决这个问题? 谢谢! 乔纳斯
基于这个博客和评论中的一些代码,我试图为Puppet定义一些简单的CPAN安装function,我试着这样做: class perl { define install-cpan () { exec { "cpan_load_${name}": command => "perl -I.cpan -MCPAN -e '\$ENV{PERL_MM_USE_DEFAULT}=1; install $name'", cwd => "/root", path => "/usr/bin:/usr/sbin:/bin:/sbin", unless => "perl -M$name -e 1", } } package { 'perl': ensure => installed } } perl::install-cpan { "Bundle::CPAN": } 但是我得到这个错误: err: Could not retrieve catalog from remote server: […]