13

開示:私はたくさん検索しましたが、私の質問(私の設定に関する)はここで答えられていないと思います。たとえば 、cgi apache サーバー が応答しないため、python スクリプトを実行します。

だから:私は可能な限り最も単純なスクリプトを持っています:

#!/usr/bin/env python

print "Content-type: text/html"
print ""

print "<h1>Hello from Python!</h1>"

ブラウザで実行すると、予想されるHello from Python!ではなく、文字通りそれ自体が表示されます 。

実行するために次のことを行いました。

a) 誰でも実行できる。シェルで完全に実行されます。

b)次の構成を持つ仮想ディレクトリにあります(/etc/apache2/sites-available/my_cgi_dir内):

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/
    <Directory />
           Options FollowSymLinks
           AllowOverride None
    </Directory>
   <Directory /var/www/my_cgi_dir/>
           Options Indexes +ExecCGI FollowSymLinks MultiViews
           AddHandler cgi-script .cgi .py
           AllowOverride None
          Order allow,deny
          allow from all
   </Directory>

   ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
   <Directory "/usr/lib/cgi-bin">
           AllowOverride None
           Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
           Order allow,deny
           Allow from all
   </Directory>

   ErrorLog ${APACHE_LOG_DIR}/error.log
   LogLevel warn
   CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

ご覧のとおり、

       Options Indexes +ExecCGI FollowSymLinks MultiViews

       AddHandler cgi-script .cgi .py

c) Sudo apt-get install libapache2-mod-python を実行して、Apache が Python をサポートしていることを確認しました。

d) はい、Apache を再起動しました。

それでも、「Hello Python」の代わりにスクリプトのソースが表示されます。

私は何が欠けていますか?

助けてください。


PS:それが役立つ場合は、ここに私が実行しているものがあります:

Linux ip-172-31-37-178 3.2.0-40-virtual #64-Ubuntu SMP Mon Mar 25 21:42:18 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

サーバーのバージョン: Apache/2.2.22 (Ubuntu)

パイソン 2.7.3

4

6 に答える 6

2

私の場合、ScriptAlias指示を間違えました。元のコメントを外しましたが、新しいものを設定するのを忘れていました。

これから設定ファイルを正しく変更して保存するとすぐに:sites-available/default

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">

..これに:

ScriptAlias /cgi-bin/ /var/www/cgi-bin/
<Directory "/var/www/cgi-bin">

..そしてapache2をリロードすると、うまくいきました。スクリプトをテキストとして表示するのをやめ、スクリプトとして実行し始めました。/var/www/cgi-binまた、ブラウザでディレクトリとして表示されなくなりましたが、エラーが正しく表示されるようになりました。

Forbidden 
You don't have permission to access /cgi-bin/ on this server.
于 2013-11-15T23:20:04.737 に答える
2

これを試して

    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

cgi スクリプト

import cgi
import cgitb; cgitb.enable()
print "Content-type: text/html\n\n"
print "<h1>Hello from Python!</h1>"

このように構成しませんか?ここ。

ScriptAlias /cgi-bin/ /var/www/my_cgi_dir/
<Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>
于 2013-10-25T02:02:07.357 に答える
0

私の場合 (共有 UNIX マシン)、隠しファイル ".htaccess" を次のように作成する必要もあります。

Options +ExecCGI
SetHandler cgi-script 

それに応じてパーミッションを設定することも重要です (755 - 書き込みは許可されていませんが実行パーミッションを持つグループおよびその他)。

#!/usr/bin/python

python CGI スクリプトの最初の行として。

于 2015-06-18T20:13:04.853 に答える