2014-10-11 65 views
1

我想让OpenDLP在我的系统上工作。对于那些不熟悉这一点的人,只能将它想象成一个perl网站。Apache和Perl

我主要准备了一切,但用户界面给出错误。

经过一些挖掘和调试,我发现我的Perl脚本正在目录'/'下运行!当页面试图读取'../etc/db_admin'时,他们不会找到它并抛出错误。

我的虚拟主机配置此UI:

<VirtualHost opendlp.local:443> 
    ServerAdmin [email protected] 
    DocumentRoot "/home/vahid/Downloads/OpenDLP-0.5.1/OpenDLP/web/bin" 
    ServerName opendlp.local:443 
    ErrorLog "/var/log/httpd/opendlp-error_log" 
    CustomLog "/var/log/httpd/opendlp-access_log" common 

    Include conf/extra/httpd-opendlp.conf 

    <Directory "/home/vahid/Downloads/OpenDLP-0.5.1/OpenDLP/web/bin"> 
       AddHandler perl-script .pl .html 
       PerlResponseHandler ModPerl::Registry 
       Options +ExecCGI 
       PerlOptions +ParseHeaders 
       AllowOverride All 
       Options All 
       Require method GET POST OPTIONS 
    </Directory> 


</VirtualHost> 

,这里是httpd.opendlp.conf

Alias /OpenDLP/images/ /home/vahid/Downloads/OpenDLP-0.5.1/OpenDLP/web/bin/images 
<Directory "/home/vahid/Downloads/OpenDLP-0.5.1/OpenDLP/web/bin/images/"> 
     Options FollowSymLinks 
     AllowOverride None 
     order allow,deny 
     allow from all 
     #AuthType Basic                                
     #AuthName "OpenDLP"                               
     #AuthUserFile /etc/apache2/.htpasswd.dlp.user                         
     #Require user dlpuser                               
</Directory> 
ScriptAlias /OpenDLP/ "/home/vahid/Downloads/OpenDLP-0.5.1/OpenDLP/web/bin/" 
ScriptAlias /cgi-bin/ "/home/vahid/Downloads/OpenDLP-0.5.1/OpenDLP/web/bin/" 
<Directory "/home/vahid/Downloads/OpenDLP-0.5.1/OpenDLP/web/bin/results/"> 
     Options FollowSymLinks 
     AllowOverride None 
     order allow,deny 
     allow from all 
     #AuthType Basic                                
     #AuthName "OpenDLP"                               
     #AuthUserFile /etc/apache2/.htpasswd.dlp.agent                         
     #Require user ddt                                
</Directory> 
<Directory "/home/vahid/Downloads/OpenDLP-0.5.1/OpenDLP/web/bin/"> 
     Options FollowSymLinks 
     AllowOverride None 
     order allow,deny 
     allow from all 
     #AuthType Basic                                
     #AuthName "OpenDLP"                               
     #AuthUserFile /etc/apache2/.htpasswd.dlp.user                         
     #Require user dlpuser                               
</Directory> 

#Also add this stuff to the Apache config file:                          
# taken from http://hausheer.osola.com/docs/9                           
SSLEngine on 
#SSLVerifyClient require                                
SSLCertificateFile /home/vahid/Downloads/OpenDLP-0.5.1/OpenDLP/server.crt 
SSLCertificateKeyFile /home/vahid/Downloads/OpenDLP-0.5.1/OpenDLP/server.key 
SSLCACertificateFile /home/vahid/Downloads/OpenDLP-0.5.1/OpenDLP/server.crt 

我还没有尝试过的Perl网站之前,我不熟悉的mod_perl及其选项。我已经为此搜索,但似乎我不知道在哪里看(当然这里除外:-))

顺便说一下,我在Arch Linux x64上,如果它很重要。

在此先感谢

编辑:这里是一些错误的更多信息。 这是我得到的错误,当我访问https://opendlp.local/profiles-manage.html

No such file or directory at /home/vahid/Downloads/OpenDLP-0.5.1/OpenDLP/web/bin/profiles-manage.html line 29. 

这里是第29行(及其周围)文件:

use CGI qw/:standard/; 
use DBI; 
use Cwd qw(); 


my $version = get_version(); 
my $db_admin_file = "../etc/db_admin"; 
my($db_username, $db_password) = ""; 
open(DB, $db_admin_file) or die $!; # LINE 29 
my $db_line = <DB>; 
close(DB); 
chomp $db_line; 
($db_username, $db_password) = split(":", $db_line); 


header(); 
print "<heading>Manage existing scan profiles</heading><normal><br><br>\n"; 

我已经加入use Cwd自己(google搜索,实际上),并检查工作目录,即/

回答

0

改变DocumentRoot的,而不是

/home/vahid/Downloads/OpenDLP-0.5.1/OpenDLP/web

/家庭/瓦希德/下载/ OpenDLP-0.5.1/OpenDLP/web/bin“

然后在你的脚本中:

my $db_admin_file = "etc/db_admin"; 

您,是因为您的代码,你设置为文档根目录被认为是根目录(/),在虚拟主机上运行的“找不到文件”的错误。你不能“落后”根目录,

+0

我知道,但如果我想这样做,我也必须改变每一个脚本。没有办法告诉'mod_perl'使用脚本的目录作为cwd吗?应该有一个方法 – vfsoraki 2014-10-11 18:23:47

+0

我这样做,并没有奏效。我发现'/'实际上意味着我的根分区,因为当我将'db_admin'复制到'/ etc'时,一切正常! – vfsoraki 2014-10-12 22:07:43