0

サーバー [Linux OS] で小さな CGI スクリプトを実行しています。以下はスクリプト出力の一部です。

<tr><td valign="center">Lol</td><td valign="center">10112</td><td><a 
href="/home/pathtopdf/abc.pdf">abc.pdf</a></td></tr>

しかし、この abc.pdf ハイパーリンクをクリックすると、ブラウザーにエラー メッセージが表示されます。pdfURL /home/pathtopdf/abc.pdf was not found on the server.とパスは確実に存在し、パス内のすべてのファイルとフォルダー [pdf を含む] には完全なアクセス許可があります。

私のサーバーの場所は @/srv/wwwで、スクリプトは/srv/www/cgi-binにありますが、次のように pdf へのリンクを配置すると

<tr><td valign="center">Lol</td><td valign="center">10112</td><td><a 
href="/srv/www/for_html/abc.pdf">abc.pdf</a></td></tr>

エラーメッセージはThe requested URL '/srv/www/for_html/abc.pdf' resolves to a file which is marked executable but is not a CGI file; retrieving it is forbidden.、ファイルのアクセス許可が再びありました。

問題は何ですか?

4

2 に答える 2

3

問題は、webroot の外でファイルを要求しようとすることです。それをクリックすることで、ブラウザは実際にリクエストしています

http://example.com/home/pathtopdf/abc.pdf

いいえ

/home/pathtopdf/abc.pdf

Apache構成ファイルを編集して、サブドメインの下のそのディレクトリに仮想ホストを追加できます(ダウンロードなど)

于 2012-05-30T04:43:10.653 に答える
0

file://編集後、サーバー上で直接プロトコルを使用していると思います。.pdfのファイル権限から実行可能ビットを削除するだけです。シェルから実行:

chmod -x /srv/www/for_html/abc.pdf
于 2012-05-30T04:46:22.930 に答える