我可以使用Perl脚本中的DBI模块轻松地连接到远程MySQL服务器。但是,当我尝试在CGI脚本中使用相同的连接设置/属性时,连接失败。
尽管使用apache错误日志或浏览器,也没有记录有用的错误/警告
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
奇怪的是,当从终端执行时,完全相同的脚本可以正常工作。我还尝试将CGI脚本连接到localhost上的MySQL服务器,但没有成功。
另一方面,phpMyAdmin在计算机上运行良好。
我正在使用CentOS 5.8版。我怀疑这是apache用户或OS上其他任何地方的系统/特权问题,但是已经走到了尽头。
任何指针将不胜感激!
非常感谢。
编辑:我正在使用以下连接字符串
$dbh = DBI->connect($ds, $uname, $pwd,{RaiseError => 1 }) or die "$DBI::errstr Could not connect: $!<br>";
固定它。万一对Linux管理不太熟悉的人遇到类似的问题,这就是发生的事情。我的CentOS计算机上的安全系统“ selinux”禁止httpd与远程MySQL服务器建立网络连接。必须使用以下命令显式启用它
setsebool -P httpd_can_network_connect=1
您可以在此处阅读有关selinux的更多信息:
http://wiki.centos.org/HowTos/SELinux