我正在运行Apache 2.4服务器。我有以下脚本:
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5 use Getopt::Std;
6
7 my $build = `curl -s https://myserver.myurl.com/mydir/myscript.pl`;
8 print "$build\n";
此脚本位于Apache服务器上。如果我在apache服务器上运行此脚本,它不起作用。我没有回来。
如果我在本地运行此脚本,它将按预期工作。它在apache服务器上执行我的script.pl,然后我找回正确的数据。
我可能在这里做错了什么?鼓励任何有助于我调试此信息的信息。
以下是我的apache配置文件中此目录的配置设置:
ScriptAlias /mydir/ /srv/mydir/
<Directory /srv/mydir/>
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
答案 0 :(得分:0)
好的,在我发布这个问题后不久,我想出了原因。
因此,如果我将curl命令语法更改为:
my $build = `curl -v https://myserver.myurl.com/mydir/myscript.pl`;
我能看到详细的输出。输出中嵌入了这个:
* server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0
* Closing connection 0
curl: (60) server certificate verification failed.
我可以通过修改我的curl命令语法绕过此证书验证来使其工作:
my $build = `curl -k https://myserver.myurl.com/mydir/myscript.pl`;
标志 -k 是 - 不安全的别名。基本上绕过了证书验证。
正确的方法是让我弄清楚为什么没有安装证书并自行安装。