回答編集履歴

2

追記2

2019/08/08 07:55

投稿

mokemokechicken
mokemokechicken

スコア948

test CHANGED
@@ -77,3 +77,31 @@
77
77
  CGIなので何か出力していると思いますが、
78
78
 
79
79
  そのエラーメッセージをみるにHeaderをBodyより前に出力しているかをまず確認したほうが良さそうです。
80
+
81
+
82
+
83
+ ------------
84
+
85
+
86
+
87
+ ■ 追記2
88
+
89
+
90
+
91
+ 更にコメントなんですが、
92
+
93
+
94
+
95
+ > ・init_dbの定義段階ではエラーせず、呼び出したときにエラーになります。
96
+
97
+
98
+
99
+ これは、そのCGIを呼び出した時に、 `init_db()` とその後の一連の処理がなければ正常に応答するってことですかね。
100
+
101
+ であれば、 Headerはちゃんと出力されているんだと思いますが、
102
+
103
+ init_db() を実行したときに、その中の何かが標準出力に文字列を吐き出してしまっていないでしょうか。
104
+
105
+
106
+
107
+ init_db() を呼ぶ前に 必要な Header をとりあえず出力してみたら、何か変わらないでしょうか?

1

追記1

2019/08/08 07:55

投稿

mokemokechicken
mokemokechicken

スコア948

test CHANGED
@@ -31,3 +31,49 @@
31
31
 
32
32
 
33
33
  という感じです。
34
+
35
+
36
+
37
+ ---------------
38
+
39
+
40
+
41
+ ■ 追記1(コメント受けて)
42
+
43
+
44
+
45
+ そのエラーは有名な?やつですね。
46
+
47
+
48
+
49
+ `End of script output before headers` などでぐぐると結構出てくると思います。
50
+
51
+ ※ エラーログのコアっぽい文字列でググるのはとても大事なことです。
52
+
53
+
54
+
55
+ 例えば以下のような話です。
56
+
57
+ https://qiita.com/taro373/items/1a94c6cd8960f6d02509
58
+
59
+
60
+
61
+ 蛇足感がありますが、少し説明しますと、
62
+
63
+
64
+
65
+ - 「CGI」というのは、「Header」というのを「Body」の前に出力しないとダメなInterfaceである
66
+
67
+ - 特に `Content-Type` Headerは省略できない
68
+
69
+ - HeaderとBody は 1つの空行で区切る。だから `print "Content-type:text/html\n\n"` みたいなのを最初に書けって話になったりする。
70
+
71
+ - Headerを出力しているが、それより前にBodyが出力されるとエラーになる(これはPHPでよく見かけるミス)
72
+
73
+
74
+
75
+ という感じです。
76
+
77
+ CGIなので何か出力していると思いますが、
78
+
79
+ そのエラーメッセージをみるにHeaderをBodyより前に出力しているかをまず確認したほうが良さそうです。