2016年3月1日火曜日

pythonをバージョンアップするとCGIが動かなくなった



今度はITネタです。

久しぶりに自分のパソコンのpythonをバージョンアップしたところ、趣味で開発中のプログラムがビクとも動かなくなった。

原因はCGIが動かないせいでした。 試しにブラウザから呼び出すと




どうもよろしくない事が起こっている様です、Apacheのログを見ると

[Sun Feb 28 10:08:13 2016] [error] [client 127.0.0.1] (OS 2)
   指定されたファイルが見つかりません。  : couldn't create child process: 720002: Login.py

[Sun Feb 28 10:08:13 2016] [error] [client 127.0.0.1] (OS 2)
   指定されたファイルが見つかりません。  : couldn't spawn child process: C:/Program Files (x86)/Apache Software Foundation/Apache2.2/cgi-bin/Login.py


ファイルがみつからない? (゜-゜)ウーン解らん、と悩むこと1時間


んっ まてよ!、このメッセージは何だ、子プロセスが作れない、となると・・・

[Sun Feb 28 10:08:13 2016] [error] [client 127.0.0.1] (OS 2)
   指定されたファイルが見つかりません。  : couldn't create child process: 720002: Login.py

[Sun Feb 28 10:08:13 2016] [error] [client 127.0.0.1] (OS 2)
   指定されたファイルが見つかりません。  : couldn't spawn child process: C:/Program Files (x86)/Apache Software Foundation/Apache2.2/cgi-bin/Login.py

メッセージの日本語ばかりに目が行き、英文を見逃していました。


CGIのソースをみると、python.exeの場所をしっかりとハードコーディングをしていた。

#!C:\Python32\python.exe                          
# -*- coding: utf-8 -*-
import cgi
import DbConnection
import mojichk
import hashlib
   :
   :



以前はインストール時にインストール先のディレクトリを聞かれたのですが、今回pythonをインストールしたときは、インストール先の問い合わせが無かったです。

しらべるとc:\Users下にインストールされていました。 
単にインタプリッタが見つからなかっただけでした。



インストーラを起動すると、お任せインストールかカスタマイズインストールか選択できます。
お任せにするとc:\Users配下にインストールします。

カスタマイズを選ぶとインストール先を選ぶことができます。