私はここ 1 週間、オンラインで Python を学習し続け、Python での CGI プログラミングに触れてきました。 CGI の公式の定義は次のとおりです:
CGI (Common Gateway Interface) は、共通のゲートウェイ インターフェイスであり、 HTTP サーバーなどのサーバー上で実行され、クライアントの HTML ページとのインターフェイスを提供します。
私は Python CGI がどれほど強力なアプリケーションを作成できるかに興味があるため、Python のプログラミング部分を直接学習し始めました。まず、Wamp 統合開発がコンピューターに既にインストールされているように Web サーバーを構成する必要があります。 . 環境なので、Apache をインストールする必要はありません。Apache での設定方法については、Linux 環境で行う必要があるとのブログ記事がインターネット上にたくさんあります。大きく変わったので、私は自分の手直しの旅を始めました。 Windows を開発に使用することは実は落とし穴であることがわかりました。
オンライン学習 Web サイト Python CGI によると、まず CGI ディレクトリを設定し、Apache 設定ファイル内の httpd.conf
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
を変更してから、次のように httpd.conf ファイルをmodifyする必要があります。 <Directory "/var/www/cgi-bin">
AllowOverride None
Options +ExecCGI
Order allow,deny
Allow from all</Directory>
次に、.py で終わる Python スクリプト ファイルにアクセスできるように、
これをすべて行った後、サーバー (Apache/Wamp) を再起動し、最初の CGI を書き込みますプログラムのコードは次のとおりです:
test1.py#!D:\Python27\python # -*- coding: UTF-8 -*-print "Content-type:text/html\r\n\r\n"print '<html>'print '<head>'print '<title>Hello Word - First CGI Program</title>'print '</head>'print '<body>'print '<h2>Hello Word! This is my first CGI program</h2>'print '</body>'print '</html>'
最初の行の内容は、スクリプトインタープリタの場所を指定します。これは、インストールしたパスに従って変更できます
次に、ブラウザのアドレス バーに「http ://localhost/cgi-bin/test1.py
」と入力します。すると、ブラウザにアクセスすると次の結果が表示されます: Hello Word! This is my first CGI program
問題ありません
2番目のプログラム: hello_get.py #!D:\Python27\python# -*- coding: UTF-8 -*-# CGI处理模块import cgi, cgitb
# 创建 FieldStorage 的实例化form = cgi.FieldStorage() # 获取数据first_name = form.getvalue('first_name')last_name = form.getvalue('last_name')print "Content-type:text/html\r\n\r\n"print "<html>"print "<head>"print "<title>Hello - Second CGI Program</title>"print "</head>"print "<body>"print "<h2>Hello %s %s</h2>" % (first_name, last_name)print "</body>"print "</html>"
ブラウザに localhost/cgi-bin/hello_get.py?first_name=ZARA&last_name=ALI と入力します
ただし、Web サイトのとおりに出力されません Hello ZARA ALI
それで、私は、Baidu Apache CGI の設定方法が同じであったので、混乱しました。これらはすべて Linux での設定方法なので、他に方法はありません。その後、上記の各手順を再度実行し、コードをコピーしました。ウェブサイトを
エディターに
http://localhost/cgi-bin/hello_get.py?first_name=ZARA&last_name=ALI結果は依然として上記のエラーメッセージの文字列だったので、プロンプトを詳しく調べました。これは、大まかに次のことを意味します:
内部サーバーエラー
サーバーで内部エラーが発生したか、構成ミスによりリクエストを完了できませんでした
電子メールでサーバー管理者に連絡し、このエラーとこのエラーが発生する前に行ったことを知らせてください
知りたいもっと見る サーバーエラーログを確認してください
そのため、サーバーの設定が間違っているからだと思い込んでいたのですが、設定ファイルを何も変更していないときに、ふと思いつきました。以前は、最初のプログラム test1 は正常に実行できましたが、このエラーは構成ファイルとは関係がないので、test1 の最初の行でインタープリタのパスを宣言するステートメントを削除して、再度実行してみました。
これは私の推測を裏付けるもので、私のスクリプトファイルがこの場合、hello_get.py のエラーも同じであるため、問題はコードにエラーがあるかどうかを確認するだけです。
ここで、私の悪い習慣について考えてみたいと思います。ウェブサイトでルーチンを実行しようとするとき、私はいつも Ctrl C を押してから Ctrl V を押して、コピーしてエディターに貼り付けます。もっと簡単なプログラムです。多くのコード ブロックを含むより複雑なプログラムの場合、この習慣の影響で、インデント形式が正しくなくなり、実行エラーが発生します。これは、Python には厳密なインデント要件があるためです。は非常に厳密であるため、Python プログラムをコピーして自分のプログラムに貼り付けることはできません。インデントを制御できるようにコードを 1 つずつ入力する必要があります。
私がこれを言うと、人々は私のhello_get.pyファイルのエラーをすでに目にしています。実際、私はそれを以前にオンラインでコピーしようとしただけです。 C 言語のコードは VC++6.0 に入れられています。一見、構文は完全に正しいように見えますが、常に以下のエラーが発生し、プロンプトが理解できないため、この状況に遭遇した場合は、これかもしれないと思います。理由。また、コードは自分でプログラムに 1 文字ずつ入力する必要があることも警告しています。そうしないと、検出が難しいエラーが発生します。
最後に、CGI スクリプトを正しく実行するために Windows で wamp (Apache) を正しく設定する方法について説明します。手順は非常に簡単です:
httpd.conf を開きます。
の371行目を変更
ScriptAlias /cgi-bin/ "D:/wamp/bin/apache/apache2.4.9/cgi-bin/"前面的#号去掉,就是解除注释,将后面引号里的D:/wamp/bin/apache/apache2.4.9/cgi-bin/改成自己的cgi-bin所在的路径
将387行f1f3f85950947386ceb2305656cc4f44引号里的内容也改成自己的cgi-bin所在的路径
保存之后重启服务器即可
【相关推荐】
2. 分享在IIS上用CGI方式运行Python脚本的实例教程
以上がPythonCGI プログラミングのサンプル チュートリアルを共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。