web-dev-qa-db-ja.com

このサーバーで/index.pyにアクセスする権限がありません

Pythonで簡単なテストページを設定しています。 .htaccessとindex.pyの2つのファイルしかありません。 (両方のアクセス許可が755に設定されています)ページを表示しようとすると403 Forbiddenエラーが発生します-これを修正するにはどうすればよいですか?

.htaccess:

RewriteEngine On
AddHandler application/x-httpd-cgi .py
DirectoryIndex index.py

index.py:

#!/usr/bin/python
print "Content-type: text/html\n\n"
print "test"
1
Yongho

エラーログを確認しましたか?それは最初に見る場所です。

あなたのAddHandlerは間違っていると思います。 documentation は、次のように使用されていることを示しています。

構文:AddHandlerハンドラー名拡張子[拡張子].。

application/x-httpd-cgiはハンドラーではなく、MIMEタイプです。

おそらくExecCGIをオンにする必要があります( docs を参照)。これは通常/cgi-bin/で有効になっていますが、ファイルがそこにない場合は、.htaccessに次のようなものが必要になります。

Options +ExecCGI
AddHandler cgi-script .py

これは、サーバーが.htaccessファイルを許可することに依存しています。 AllowOverrideドキュメント を参照してください。

RewriteEngine Onは必要ありません。DirectoryIndexは、ファイル名のない包含ディレクトリ(つまり、/python/)にアクセスしたときに返されるファイルを設定するだけです。

このソリューションは、.pyを使用してmod_cgiスクリプトの実行を可能にするだけです。 mod_pythonを提案している他のソリューションも機能しますが、これはより複雑で、ApacheプロセスにPythonインタープリターが組み込まれています。これは、システムPythonインタープリターを使用した直接実行には必要ありません。

1
markdrayton

AddHandlerAddHandler mod_python .pyに変更します。

/etc/Apache2/mods-available/dir.confDirectoryIndexを使用する代わりに、index.pyを編集してそこに.htaccessを追加したいと思います。

index.pyを次のように変更します。

#!/usr/bin/env python


def index(req):
    return "test"
0
Martin Thoma

ファイルシステムのどこでこれを行っているかについて言及していないことに気づきました。作業中のフォルダーにApache構成内でアクセス許可が設定されていない場合、ファイルシステムに設定されているUnixアクセス許可に関係なく、403を取得します。 Apacheは、構成で使用できると言われていない場所に物理的に保存されているファイルを提供しません。

おそらく通常のWebディレクトリ内で作業しているので、これはおそらくロングショットですが、それでもテストする価値があります。プレーンテキストファイルを同じフォルダーに貼り付けて表示してみてください。表示された場合は問題ありません。それでも403が表示される場合は、Apache構成を確認してください。

それ以外は、markdraytonの提案は的を射ていると思います。

0
Bart B

サーバーでこれを試したところ、問題なく動作しました。

  • HtaccessをCHMODする必要はないようです。
  • 「yoursite.com/folder」と「yoursite.com/folder/index.py」の両方にアクセスしてみましたか?両方とも私のために働いたが、多分そのDirectoryIndex行はあなたのために正しく働いていませんか?その行を削除した場合、/ index.pyのみが機能します。

また、これらのファイルをhtaccessに追加してみてください(必要に応じて置き換えます)。

AddHandler mod_python .py
PythonHandler index
PythonDebug On 

私の別のシステムでは、python処理を機能させるために(mod_pythonを使用して)これらの行が必要でした。

0
NickAldwin

ディレクトリが表示可能であることを確認しましたか?ディレクトリに関する権限の問題が、過去に含まれていたファイルに干渉することがありました。

また、.htaccessはPerlやbashなどの他のスクリプトでも機能しますか?

通常、Apache構成ファイルにはPython(mod-pythonに渡されたと思います)のデフォルトハンドラーがあります。htaccessを削除すると、スクリプトはデフォルトハンドラーを使用して実行されますか?

0
warren