はじめに
以前Pythonで自分のPCだけで簡易Webサーバーを立てる機能をご紹介しました。
最近簡易Webサーバー機能を使ったのですが、トラブルが発生したのでその事象の紹介と、解決策について紹介します。
環境
- Windows 11 Python 3.12.5
- Kubuntu 22.04 Python 3.10.12
事象
<事象>
Pythonの簡易Webサーバー使用時、CGIプログラム実行するとエラーが発生し、レスポンスが返ってこない。
<エラー内容>
CGIプログラムはPythonで作成しました。
今回CGIプログラムを作成するために簡易Webサーバーで開発・デバッグを行っていました。
その時、そのCGIプログラムを実行すると下記エラーが発生しました。
■Kubuntuの場合
FileNotFoundError: [Errno 2] No such file or directory:
■Windowsの場合
OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
解決方法
CGIプログラムのファイル拡張子を「.cgi」から「.py」に変更する。
本番環境でcgiプログラムを実行する場合は拡張子を「.cgi」にする必要があるのですが、ローカルPC環境でPythonの簡易webサーバー機能を使用すると、「.cgi」ファイルを実行できずエラーになることが分かりました。
ですので、Pythonの簡易webサーバー機能を使用する場合は拡張子を「.py」のPythonファイルにすることで解決できました。
本番環境のwebサーバーではCGIプログラムは拡張子を「.cgi」にする必要があるのでややこしいですね。※もしかしたら、現在のwebサーバーでは「.py」ファイルもCGIプログラムとして認識する可能性もあるかもしれませんが、未確認です。