[英]Apache and Perl
我正在尝试使OpenDLP在我的系统上工作。 对于不熟悉此功能的人,只需将其视为perl网站即可。
除了UI会给出错误之外,我几乎都准备了一切。
经过一些挖掘和调试后,我发现我的Perl脚本在目录“ /”下运行! 当页面尝试读取“ ../etc/db_admin”时,它们将找不到并引发错误。
我的用户界面的虚拟主机配置:
<VirtualHost opendlp.local:443>
ServerAdmin vahid.fazl2000@engineer.com
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
我以前没有尝试过Web的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
(实际上是use Cwd
搜索),并检查了工作目录/
。
将DocumentRoot更改为
/home/vahid/Downloads/OpenDLP-0.5.1/OpenDLP/web
代替
/home/vahid/Downloads/OpenDLP-0.5.1/OpenDLP/web/bin”
然后在您的脚本中:
my $db_admin_file = "etc/db_admin";
您有“找不到文件”错误,因为您的代码在虚拟主机上运行,其中您设置为“文档根目录”的目录被视为根目录(/)。 您不能“落后”一个根目录,
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.