前提・実現したいこと
End of script output before headers: index.cgiのエラーを解決したい
xserver上のcgiファイルを実行し、ブラウザに「OK」と表示したい
index.cgiの実行・処理に問題があると推測したのですが、どこでこけるのか分からず、原因の特定に行き詰まっています。皆さんでしたら、どこを確認されますか?どうか、ご教示ください。
発生している問題・エラーメッセージ
http://{Xserverのドメイン}/test/にアクセスすると、
ブラウザでは、500 internal server errorと表示され、
Xserverのログは、以下の通り出力される
log
1[Mon May 04 18:18:55.438879 2020] [cgid:error] [pid 83735:tid 140227192305408] [client 122.133.103.31:42088] End of script output before headers: index.cgi
該当のソースコード
Xserver内、public_html/test/下に.htaccess, index.cgiを配置
.heaccessの中身
htaccess
1Options -Indexes 2Options +ExecCGI 3AddType application/x-httpd-cgi .cgi .pl .pm 4AddHandler cgi-script cgi pl pm 5 6RewriteEngine On 7RewriteCond %{REQUEST_FILENAME} !-f 8RewriteRule ^(.*)$ index.cgi/$1 [QSA,L]
index.cgiの中身
cgi
1#!~/.linuxbrew/bin/python3 2 3print("Content-Type: text/html\n\n") 4print("OK")
試したこと
index.cgiの中身の確認
python3のpathは問題ない
[xs186537@sv10203 rexia]$ which python3 ~/.linuxbrew/bin/python3
他の記述もタイプミスや改行コードも問題なく見える
cgiファイルの配置を確認
XserverのQ&Aのは以下の通り
「ドメイン名/public_html 以下であれば、どこでも問題ございません。」
参照:https://www.xserver.ne.jp/support/faq/faq_service_cgi.php
問題なさそう
ファイルやフォルダの権限を確認
drwxr-xr-x 5 xs186537 members 185 5月 4 18:18 . drwx--x--x 3 xs186537 members 119 5月 4 16:33 .. -rwxr-xr-x 1 xs186537 members 206 5月 4 18:15 .htaccess -rwxr-xr-x 1 xs186537 members 78 5月 4 18:15 index.cgi
XserverのQ&Aのは以下の通り
ディレクトリ | 755, 705のいずれか |
.cgi .pl などの CGI 実行ファイル | 755, 705のいずれか |
参照:https://www.xserver.ne.jp/support/faq/faq_service_cgi.php
カレントディレクトリ, .htaccess, index.cgi共に755なので、問題なさそう
.htaccessの動作を確認
http://{Xserverのドメイン}/test/にアクセスし、「End of script output before headers: index.cgi」とログに出力されるので、正常に動作してると思われる
cgiファイルの権限を777に変更してみる
ブラウザのエラー出力及びログのエラー出力ともに文言変わらず
一行目pythonのpathを削除してみる
ブラウザのエラー出力及びログのエラー出力ともに文言変わらず
index.cgiの中身を空にしてみる
ブラウザのエラー出力及びログのエラー出力ともに文言変わらず
index.cgiを直接実行してみる
[xs186537@sv10203 rexia]$ python3 index.cgi Content-Type: text/html OK
cgiの実行言語をperlにしてみる(2020/05/05追加)
index.cgiを以下の通り変更
perl
1#!/usr/bin/perl 2 3print "Content-Type: text/html\n\n"; 4print "OK";
ブラウザに「OK」と表示された
python3だとダメなのは何故なのか
捕捉
サーバー: Xserver
OS: Linux
CGI記述言語: Python3 version: 3.7.7
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。