質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Q&A

解決済

1回答

5224閲覧

Windows10上のApacheでPythonのCGIが動かない 「ファイルにアクセスできません。」

taro373

総合スコア189

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

0グッド

0クリップ

投稿2021/05/09 02:20

編集2021/05/09 02:26

Windows10にApacheをインストールして、CGIのテスト環境を作っています。
CGIはPythonで作成しています。

(かつて正常に動作したと記憶していたと記憶している)ファイルが下記「ファイルにアクセスできません。」のエラーになります。
(タイムスタンプから今年の初めには動いていたような.....)

※ なぜIISを使わないかと指摘がありそうなので.....
IISでも試しましたが、実稼働はApacheですし、普段はMacで作成しCentOSで稼働なので
使い慣れているApacheとしました。 

このエラーの原因として、何が考えられるでしょうか。
今月になってWindowsUpdateが長い時間動いていましたが、関係はないですよね。

http://localhost/helloworld.py

[Sun May 09 10:23:41.101302 2021] [cgi:error] [pid 1712:tid 1844] (OS 1920)ファイルにアクセスできません。 : [client ::1:54401] couldn't create child process: 721920: helloworld.py [Sun May 09 10:23:41.113348 2021] [cgi:error] [pid 1712:tid 1844] (OS 1920)ファイルにアクセスできません。 : [client ::1:54401] AH01223: couldn't spawn child process: C:/var/Apache24/htdocs/helloworld.py

Apacheのバージョン

C:\Windows\system32>httpd -v Server version: Apache/2.4.46 (Win64) Server built: Dec 9 2020 10:17:06

file:///C:/var/Apache24/htdocs/helloworld.py
で開けばソースが表示されます。「ファイルがない」エラーではないと考えられました。

イメージ説明

このエラーはシバンに書いたパス(今回のケースではpythonのパス)が間違っているらしいと考え
コマンドプロンプト上でwhereコマンドでパスを確認しました。
Python のバージョンも 3.9.5 であることを確認しました。

C:\Windows\system32>where python C:\Users\tutik\AppData\Local\Microsoft\WindowsApps\python.exe C:\Windows\system32>python -V Python 3.9.5

httpd.confの設定も確認しました。拡張子".py"は追加してありました。
ドキュメントルートでCGIの実行は許可してあります。
mod_cgi.soの行はコメントを解除しています

httpd.conf

DocumentRoot "${SRVROOT}/htdocs" <Directory "${SRVROOT}/htdocs"> #Options Indexes FollowSymLinks #Options Indexes FollowSymLinks Options Indexes FollowSymLinks ExecCGI <IfModule mime_module> #AddHandler cgi-script .cgi .pl AddHandler cgi-script .cgi .pl .py #LoadModule cern_meta_module modules/mod_cern_meta.so LoadModule cgi_module modules/mod_cgi.so #LoadModule charset_lite_module modules/mod_charset_lite.so

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

itagagaki

2021/05/09 03:04

WindowsのApacheはシバンのパスがDOS形式でも行けるんでしたっけ? #!/Users/tutik/AppData/Local/Microsoft/WindowsApps/python.exe ではどうですか?
taro373

2021/05/09 05:25

Cドライブの指定は付けなくていい?と思いながら下記が実行できたので C:\var\Apache24\htdocs>/Users/tutik/AppData/Local/Microsoft/WindowsApps/python.exe -V Python 3.9.5 #!/Users/tutik/AppData/Local/Microsoft/WindowsApps/python.exe   と #!C:/Users/tutik/AppData/Local/Microsoft/WindowsApps/python.exe を試してみましたが変化はありませんでした。 ここに、シバンの質問がありました。ディレクトリの区切りは¥でした。 https://teratail.com/questions/242869 helloworld.pyをコマンドプロンプトから実行してみました C:\var\Apache24\htdocs>python helloworld.py # python を指定すれば動く Content-Type: text/html Hello World!<br> Current timeは:2021-05-09 14:13:36 C:\var\Apache24\htdocs>./helloworld.py # linuxのように ./ を付けたら動かない '.' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 C:\var\Apache24\htdocs>helloworld.py    # エディタ(sublimeが動いてソースが表示された)  C:\var\Apache24\htdocs>
guest

回答1

0

ベストアンサー

コマンドプロンプトで
dir C:\Users\tutik\AppData\Local\Microsoft\WindowsApps\python.exe
してみてください。サイズが0じゃないですか?
これ、なぜか<SYMLINK>の表示も無く、なんだかよくわからないのですが、Cygwinでfile python.exeしてみたら
python.exe: symbolic link to /cygdrive/c/Program Files/WindowsApps/PythonSoftwareFoundation.Python.3.9_3.9.1520.0_x64__qbz5n2kfra8p0/python3.9.exe
となりました。
で、そのパスをシバンに書いたらPython CGIが動くと思います(動きました)。

投稿2021/05/09 06:57

itagagaki

総合スコア8402

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

taro373

2021/07/18 11:04 編集

ありがとうございました。 itagagakiさんがおっしゃる通りでした。サイズはゼロです。 どうしてわかったのですか?すばらしい。 C:\>dir C:\Users\tutik\AppData\Local\Microsoft\WindowsApps\python.exe C:\Users\tutik\AppData\Local\Microsoft\WindowsApps のディレクトリ 2021/05/08 18:39 0 python.exe 1 個のファイル 0 バイト 0 個のディレクトリ 73,171,673,088 バイトの空き領域 C:\>dir C:\Users\tutik\AppData\Local\Microsoft\WindowsApps\python3.exe C:\Users\tutik\AppData\Local\Microsoft\WindowsApps のディレクトリ 2021/05/08 18:39 0 python3.exe 1 個のファイル 0 バイト 0 個のディレクトリ 73,171,673,088 バイトの空き領域 Cygwinは使ったことがなく、さてどうしよう、と思っていましたが、 デフォルトでどこにインストールされているのか、ググってみると下記のページが参考になりました。 https://tarufu.info/windows10-python-path/ このページの記述を参考にして下記のシバンを書きました (Pythonがインストールされた場所を確認します。 デフォルトでは以下の場所にインストールされています。 C:\Users\ユーザー名\AppData\Local\Programs\Python\Python39\Scripts ) #!C:\Users\tutik\AppData\Local\Programs\Python\Python39\python.exe これで動きました。 ナゾですね。 whereコマンドでなぜ実体でないところが表示されるのか シバンに書いたのがリンクであっても、実体があるのだから動作してもよさそうなのになぜダメ? エクスプローラで「python.exe」をCドライブ中で探しても、このファイルは見つかりました。 Windowsの世界はなかなか難解ですね。勉強します。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問