ロリポップでPythonのCGIスクリプトが動かない場合の対処法
「500 Internal Server Error」が出る場合
Internalは「内部の」という意味なので、 CGIスクリプト側に何らかの問題がある可能性が高いです。
この場合は次の3点を確認してください。
- スクリプトのパスが間違っていないかどうか
- 実行権限の付与を忘れていないかどうか
- スクリプトファイルの改行コードがLFかどうか
スクリプトのパス
パスはロリポップの次のページで確認してください。
CGI・SSI・PHP・SENDMAILについて - ロリポップ!レンタルサーバー
2022年の時点でPythonのバージョンは3.4、又は3.7が使えます。
# 3.4の場合 #!/usr/local/bin/python3.4 # 3.7の場合 #!/usr/local/bin/python3.7
実行権限の付与
CGIスクリプトファイルに実行権限が無い場合はエラーになります。
一番手っ取り早いのはFFFTPなどのGUIベースのFTPクライアントソフトを使うことです。
(関連記事:
FFFTPでのパーミッションの変更方法と属性の見方)
改行コードがLFかどうか
1番目のパスと2番目の実行権限はすぐに気づきやすいのですが、 3番目の改行コードは意外と盲点です。
特にWindows環境で開発している場合は、 改行コードがCR+LFになっている可能性があります。 その場合はLFに変更してからアップロードしてください。
スクリプトファイルの拡張子に関しては、 サーバーによっては「.cgi」に変更する必要がありますが、 ロリポップは「.py」で大丈夫です。
「502 Bad Gateway Error」が出る場合
502は通信状態に異常があることを示すエラーです。 502が出る場合は、少し待ってから再度CGIを実行してみてください。
私の場合は502エラーが出てから5分後に再度実行してみると、 正常に実行できました。