2013年2月1日星期五

Re: [PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱socket的错

On 02/01/2013 05:08 PM, 夏凯 wrote:
On 2013年02月01日 16:44, Haiyan Lin wrote:

你用-e测试过/tmp/mysql.sock是否存在了么?这样可以确认apache是否chroot 了,或者你查下apache有没有加载 chroot的模块。

下面的代码(注释了DBI-connect)在命令行中,第7行代码可以打出"/tmp/mysql.sock exist\n", 但通过"apache"不能打印该行,

  1 #!/usr/bin/perl
  2 use DBI;
  3 use CGI qw(fatalsToBrowser) ;
  4 #my $dbh = DBI->connect("dbi:mysql:host=192.168.0.106:database=seedBase:mysql_socket=/tmp/mysql.sock",'apache','apache', {'RaiseError' => 1}) or die DBI-    >errstr  ;
  5 print "Content-type: text/plain\n\n";
  6 print "mod_perl 2.0 rocks! \n";
  7 print "/tmp/mysql.sock exist\n" if -e '/tmp/mysql.sock' ;


在apache的配置文件中没有chroot的字符出现,
setenforce 0后  在/path/to/httpd/logs/error_log中还是报错  [Fri Feb 01 16:54:23 2013] [error] DBI connect('host=192.168.0.106:database=seedBase:mysql_socket=/tmp/mysql.sock','apache',...) failed: Can't connect to MySQL server on '192.168.0.106' (113) at /var/www/perl/rock.pl line 4\n      




没有评论: