2015年11月8日日曜日

PythonでCGIスクリプトページが表示されない時

CGIスクリプトでスクリプトが実行されない時


PythonスクリプトでCGIスクリプトをサーバーから実行させようと思ってWebページを開こうと思っても表示されない時があります。
様々なケースが考えられますが、単純なミスの場合もあります。

サーバーを起動させているシェルのエラーを見ながら何がいけないのか疑ってみましょう。


表示されない場合(エラーに何も出ないケース)


パスは合っているのにWebページに何も表示されない場合。シェルにも異常が出てない場合はContent-Typeに全角文字が混ざっていたりスペル違いがあったりそのあたりを疑ってみましょう。

表示されない場合(エラーに「FileNotFoundError: [Errno 2] No such file or directory: 」が出るケース)


同じくWebページが表示されずシェルに「FileNotFoundError: [Errno 2] No such file or directory: 」のエラーが出る場合。スクリプトの先頭行シェバング行のパスが合っていない可能性が高いです。
通常のスクリプトは実行出来てもCGIサーバ-から実行する場合、相対パスからだと辿れないためそのエラーが発生します。絶対パスに書き換えてみてください。
現在のPythonのパスは「$ which python」で現在のPythonの実行パスを表示させ。出てきたパスをコピーして「ls -la 」で表示させるとリンクされている絶対パスを取り出せるのでそれをコピーしてシェバング行を書き換えてから実行してみてください。ただしローカル環境の絶対パスそのままだと移植性に乏しいので #!/usr/bin/env python3 を使用するかリンクを貼っておいた方が後々楽でしょう。

その他のエラー


スクリプト自体のパスが違っていたり、スペルミスでスクリプトファイルが存在してなかった場合にはシェルに「code 404, message No such CGI script」エラーが出てWebページに「Error response Error code: 404」が表示されます。

後は、スクリプトのパーミッションが(755)などに許可されていなかったり他から移動させたファイルなどやSELinuxのコンテキストが違っていたりしていたりする(code 403, message CGI script is not executable )のでそのあたりを疑ってみましょう。

0 件のコメント:

コメントを投稿