指定されたパスが見つかりません couldn't create child process とは

CGIファイルをWindowsのApacheなどで実行しようとすると、次のような500エラーが出ることがあります。

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, webmaster@example.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

最後の1文で「ログファイルに詳細が書かれている」ということなのでログファイルを見ると次のように出ています。

(OS 3)指定されたパスが見つかりません。  : couldn't create child process: 720003: test.cgi
(OS 3)指定されたパスが見つかりません。  : couldn't spawn child process: C:/www/test.cgi

この場合、CGIファイルがスクリプトとして認識はされているため、Apacheの設定が間違っているというケースは少ないです。

つまりCGIファイルの記述が間違っているということになります。

couldn't create child processcouldn't spawn child process のエラーは、 ほとんどのケースでCGI(Perl)の実行パスが間違っています。

CGIファイルの1行目にPerlの実行パスが書かれていると思いますが、
(最初に読み込むCGIファイルに書かれていなければ書いてください。)

#!/usr/local/bin/perl
とか
#!/usr/bin/perl

と書かれていた場合、そこにPerlの実行ファイルがあるか確認しましょう。

Windowsの場合、perl.exeというファイルを検索するとどこに実行ファイルがあるか探すことができます。
もし検索しても見つからなかった場合にはPerlをインストールしましょう。
[参考記事]WindowsでCGIを使用する方法

ActivePerlなら『 C:\Perl\bin 』、XAMPPなら『 C:\xampp\perl\bin 』以下にあるはずなので、

#!C:\Perl\bin\perl.exe
または
#!C:\xampp\perl\bin\perl.exe

とすると動くと思います。

Linuxと同じ記述( #!/usr/local/bin/perl とか #!/usr/bin/perl )に合わせる方法
#!/usr/local/bin/perl でも #!/usr/bin/perl でも、どちらでも実行させる方法

関連記事

スポンサーリンク

CREATE CLUSTER クラスターを作成する

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る