Perl& Apache HTTP服务器:从服务器执行cgi脚本时无法执行Tie MLDBM,但从命令行执行时可以。为什么?

时间:2010-06-17 09:08:26

标签: perl apache cgi permission-denied

请帮忙!我真的很难解决这个问题!

我有一个CGI perl脚本,当从Apache HTTP服务器执行时,它总是在以下行失败:

tie %db, 'MLDBM', "$data_path/$db_name.db", O_RDONLY, 0640 or die $!

,错误是权限被拒绝:

  

软件错误:

     

/ var / www / cgi-bin / rich / pages / display line 381中的权限被拒绝。

     

如需帮助,请发送邮件给网站管理员(root @ localhost),提供此错误消息以及错误的时间和日期。

但是从命令行执行时,它没有任何问题。

我确保要绑定的目录和文件具有正确的权限。

那么我还错过了什么? Apache的httpd.conf中的哪些配置可能会出错?不可否认,我之前没有使用Apache HTTP服务器,所以这是我第一次玩它。但是,我不止一次阅读这些手册来寻找我可能错的东西,但我没有注意到任何事情。但我当然错了。

谢谢!

1 个答案:

答案 0 :(得分:0)

您是否确认$data_path$db_name包含您认为他们的行为?

$data_path是绝对路径,不依赖于活动用户的身份或主目录吗?

ls -l $data_path/$db_name.db显示文件的所有权和权限是什么?

我从来没有碰过(或听说过)任何会阻止CGI进程获得打开文件权限的apache,所以我非常怀疑它是一个apache配置问题。很可能它正在寻找错误的文件,或者文件的权限对于apache运行CGI进程的用户来说是不正确的。