Pythonの簡易Webサーバー機能を使用する時は、ファイルの拡張子を「.py」にしないと動かない?

技術

はじめに

以前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プログラムとして認識する可能性もあるかもしれませんが、未確認です。

関連記事