2017-02-09 5 views
0

私はApache 2.4サーバを使用しています。私は次のスクリプトを持っています:Apache内のPerlスクリプト内でScriptAliasサイトを呼び出せません

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サーバーで実行すると、動作しません。私は何も返さない。

このスクリプトをローカルで実行すると、正常に動作します。それは私のscript.plをApacheサーバ上で実行し、正しいデータを取得します。

私はここで間違っている可能性がありますか?これをデバッグするのに役立つ情報があれば奨励されます。

はここに私のApacheの設定ファイルで、このディレクトリの私の構成設定です:私はこの質問を投稿した直後、

ScriptAlias /mydir/ /srv/mydir/ 
<Directory /srv/mydir/> 
    Options FollowSymLinks 
    AllowOverride None 

    Require all granted 
</Directory> 
+0

おそらく、サーバーにカールがインストールされていない可能性があります。 – SuperDuperApps

答えて

0

さて、私はその理由を考え出しました。

私は私のcurlコマンドの構文を変更するのであれば:

my $build = `curl -v https://myserver.myurl.com/mydir/myscript.pl`; 

私は、詳細出力を見ることができています。出力は、これはそれに埋め込まれていた:

my $build = `curl -k https://myserver.myurl.com/mydir/myscript.pl`; 

フラグ-k:私はこれに私のcurlコマンドの構文を変更することで、この証明書の検証をバイパスして動作するように取得することができています

* 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. 

--insecureの別名です。基本的に証明書の検証をバイパスします。

証明書がインストールされていない理由を理解し、自分でインストールするのは適切な方法です。

関連する問題