Python導入「Premature end of script headers」エラーしんどかった。MAMPで出来た。備忘録

Python
Pythonの環境をMacで作成した。
Pythonについての知識も乏しく
どうやったら実行できるのかとか環境を整えるために
何をインストールすれば良いのか分からなかった。

ネットの記事を頼りに
「Anaconda」をインストール。

Pythonやフレームワークなどが一気にインストールされ
初心者でも簡単に環境がつくれるものでした。

無事インストールも出来、どうすれば?となったが、
とりあえず、ターミナルでPythonのファイル位置を調べて見た。

which python3.7

とターミナルに入力すると

/anaconda3/bin/python3.7

と返ってきた。
インストールはうまくいったので
ターミナルで実行もしてみた。

cd 指定のファイルのあるディレクトリと指定して移動。

python test.py
で実行。
test.py
#!/anaconda3/bin/python3.7
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
print("Content-Type: text/plain;charset=utf-8\n")
print('テスト')
結果はうまくいきました。

しかし、僕の場合、これを
MAMPを使用して
ローカル上で実行をしたかったのです。
(イメージが全くつかなかったので、PHPのecho感覚で出力したいな〜)
と思っていました。

test.pyのファイル名、中身を全く変えずにhtdcs上に移動させて
MAMPを使用してもうまく行きませんでした。

スポンサーリンク


またもやネットの記事を頼りにすると

MAMP > conf > apache > httpd.conf
 
のhttpd.confファイルを編集しなければならないと書いてありました。
(MAMP > conf > apache > original ~にも同じファイルがありますが
関係ありません。)
#AddHandler cgi-script .cgi .pl
にPythonの拡張子を加え
AddHandler cgi-script .cgi .pl .py
に変更をしました。

そして再び実行。

待ってましたと言わんばかりのエラー。
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, you@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.
Google先生の翻訳機能を使うと、

内部サーバーエラー
サーバーで内部エラーまたは構成ミスが発生し、要求を完了できませんでした。

サーバー管理者のyou@example.comに連絡して、エラーが発生した時刻と、エラーを引き起こした可能性のあることを通知してください。
このエラーの詳細については、サーバーのエラーログを参照してください。

出典:



なんぞや??と思い
指示の通り、

MAMP >  logs > apache_error.log 
を開きました。

すると、Premature end of script headers: test.py
とのエラーが。
Google翻訳を使うと
「スクリプトヘッダーの早すぎる終了」と。訳も分からないのでエラーで検索。すると、
  • 一行目の「#!/anaconda3/bin/python3.7」を「#!/anaconda3/bin/python3.7 –」にすべし
  • utf-8をBOMなしに!
  • CRLFをLFに!
  • print(“Content-Type: text/plain;charset=utf-8”)をprint(“Content-Type: text/plain;charset=utf-8\n”)に!(改行)
 
と書いてあり、既になっていたり
やってもエラーが出続けていました。
(これが原因でも同じエラー起こります!)
スポンサーリンク

検索の仕方が不得意の僕は、2時間ほど
検索したり試行錯誤をしていました。そしてやっと直りました!
 
発見してしまった!!神サイトを!
このサイトを参考に無事MAMPで実行できました。

どうやら、Pythonの実行権限がなかったそうです。

なぜターミナルで動いてMAMPで動かないのかは
わかりません・・・。

ターミナルで実行権限を与えたいファイルのある
ディレクトリまで移動しましょう。
そして、

chmod 755 test.py

これで実行権限をつけられます。

もう一度、MAMPでみてみましょう。

 
 
きちんと表示されていました!!

良かった・・・。

なぜファイルの一行目にきちんと
権限を付与しているのにMAMPだとエラーが起こるのだろう・・・。

いちいちターミナルで権限を与えるのは
ものすごい面倒臭いし

どなたか、設定の仕方があれば
ご教授お願いします!

それではまた!

 

コメント

  1. あり より:
    ありがとう。
    同じ問題に直面し、MAMPでPythonをとりあえずですが表示できました。
タイトルとURLをコピーしました