mampでpythonをcgiとして実行したいが500インターネットサーバーエラー
解決済
回答 2
投稿
- 評価
- クリップ 0
- VIEW 2,606
前提・実現したいこと
現在chrome拡張機能を作成しており、jsとpythonをajaxなどで連携させたいと考えています。そこで、pythonをmampでcgiとして実行したいのですが、500Internal Server Error
と表示されます。
環境は以下の通りです。
- macOS Sierra
- Python 3.6.1 :: Anaconda 4.4.0 (x86_64)
- MAMP バージョン4.2
発生している問題・エラーメッセージ
例えば、http://localhost/background/cgi-bin/py.cgiにアクセスすると、(ディレクトリは正しいとします)
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.
と表示されます。
また、mampのエラーログは次のように言っています。
Premature end of script headers
該当のソースコード
実行したいpythonファイルは以下の通りです。
シバン行はanaconda3の中のものを指定しています。
#!/usr/bin/env /Users/suegamisora/.pyenv/versions/anaconda3-4.4.0/lib/python3.6
print("Content-Type: text/plain")
print()
import sys
print(sys.version)
また、mampのapache2のhttpd.confは以下の通りです。(文字数制限のため、コメントアウトは除きます。)
<IfModule !mpm_netware.c>
PidFile logs/httpd.pid
</IfModule>
Listen 80
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_anon_module modules/mod_authn_anon.so
LoadModule authn_dbd_module modules/mod_authn_dbd.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule file_cache_module modules/mod_file_cache.so
LoadModule cache_module modules/mod_cache.so
LoadModule disk_cache_module modules/mod_disk_cache.so
LoadModule mem_cache_module modules/mod_mem_cache.so
LoadModule dbd_module modules/mod_dbd.so
LoadModule bucketeer_module modules/mod_bucketeer.so
LoadModule dumpio_module modules/mod_dumpio.so
LoadModule echo_module modules/mod_echo.so
LoadModule case_filter_module modules/mod_case_filter.so
LoadModule case_filter_in_module modules/mod_case_filter_in.so
LoadModule reqtimeout_module modules/mod_reqtimeout.so
LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule include_module modules/mod_include.so
LoadModule filter_module modules/mod_filter.so
LoadModule substitute_module modules/mod_substitute.so
LoadModule charset_lite_module modules/mod_charset_lite.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule cern_meta_module modules/mod_cern_meta.so
LoadModule expires_module modules/mod_expires.so
LoadModule headers_module modules/mod_headers.so
LoadModule ident_module modules/mod_ident.so
LoadModule usertrack_module modules/mod_usertrack.so
#LoadModule unique_id_module modules/mod_unique_id.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule version_module modules/mod_version.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule mime_module modules/mod_mime.so
LoadModule dav_module modules/mod_dav.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule asis_module modules/mod_asis.so
LoadModule info_module modules/mod_info.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule fastcgi_module modules/mod_fastcgi.so
LoadModule cgid_module modules/mod_cgid.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
LoadModule imagemap_module modules/mod_imagemap.so
LoadModule actions_module modules/mod_actions.so
LoadModule speling_module modules/mod_speling.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule perl_module modules/mod_perl.so
LoadModule wsgi_module modules/mod_wsgi.so
LoadModule xsendfile_module modules/mod_xsendfile.so
LoadModule php7_module /Applications/MAMP/bin/php/php7.1.6/modules/libphp7.so
AddType application/x-httpd-php .php .phtml
<IfModule !mpm_netware_module>
<IfModule !mpm_winnt_module>
User (ここには僕のユーザー名が入力されてます。)
Group #-1
</IfModule>
</IfModule>
<IfModule xsendfile_module>
XSendFile on
</IfModule>
ServerAdmin you@example.com
ServerName localhost:80
DocumentRoot "/Users/(僕のユーザー名)/Desktop/Computers/broaden_your_horizons"
<Directory />
Options Indexes FollowSymLinks
AllowOverride None
</Directory>
<Directory "/Users/(僕のユーザー名)/Desktop/Computers/broaden_your_horizons">
MultiViews
Options All
files.
AllowOverride All
Order allow,deny
Allow from all
XSendFilePath "/Applications/MAMP/htdocs"
</Directory>
<IfModule dir_module>
DirectoryIndex index.html index.php
<IfModule perl_module>
DirectoryIndex index.pl
</IfModule>
<IfModule wsgi_module>
DirectoryIndex index.wsgi index.py
</IfModule>
</IfModule>
AccessFileName .htaccess
<FilesMatch "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</FilesMatch>
<Files ~ "^\.DS_Store">
Order allow,deny
Deny from all
</Files>
ErrorLog "/Applications/MAMP/logs/apache_error.log"
LogLevel error
<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
</IfModule>
<IfModule alias_module>
If you
Alias /favicon.ico "/Applications/MAMP/bin/favicon.ico"
Alias /icons/ "/Applications/MAMP/Library/icons/"
<Directory "/Applications/MAMP/Library/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Alias /phpMyAdmin "/Applications/MAMP/bin/phpMyAdmin"
Alias /phpmyadmin "/Applications/MAMP/bin/phpMyAdmin"
<Directory "/Applications/MAMP/bin/phpMyAdmin">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Alias /phpPgAdmin "/Applications/MAMP/bin/phpPgAdmin"
Alias /phppgadmin "/Applications/MAMP/bin/phpPgAdmin"
<Directory "/Applications/MAMP/bin/phpPgAdmin">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Alias /phpLiteAdmin "/Applications/MAMP/bin/phpLiteAdmin"
Alias /phpliteadmin "/Applications/MAMP/bin/phpLiteAdmin"
<Directory "/Applications/MAMP/bin/phpLiteAdmin">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Alias /MAMP "/Applications/MAMP/bin/mamp"
<Directory "/Applications/MAMP/bin/mamp">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Alias /adminer "/Applications/MAMP/bin/adminer"
<Directory "/Applications/MAMP/bin/adminer">
DirectoryIndex adminer.php
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
ScriptAlias /cgi-bin/ "/Applications/MAMP/cgi-bin/"
Alias /perl/ "/Applications/MAMP/cgi-bin/"
<IfModule perl_module>
PerlModule ModPerl::Registry
<Location /perl>
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders
Options +ExecCGI
</Location>
</IfModule>
</IfModule>
<IfModule cgid_module>
</IfModule>
ScriptAliased
<Directory "/Applications/MAMP/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
DefaultType text/plain
<IfModule mime_module>
TypesConfig /Applications/MAMP/conf/apache/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
server
AddHandler cgi-script .cgi .pyd
</IfModule>
<IfModule mime_magic_module>
MIMEMagicFile /Applications/MAMP/conf/apache/magic
</IfModule>
directory can be
<IfModule ssl_module>
SSLRandomSeed startup file:/dev/urandom 1024
SSLRandomSeed connect file:/dev/urandom 1024
learn more google for "POODLE SSLv3".
</IfModule>
試したこと
teratailに似たような質問があったので、以下のサイトを参考に、シバン行を変えてみたり、文字コードを変えてみたりしましたが、エラーは消えませんでした。
CGI形式でpythonを実行する際、pyenvで指定したバージョンのpythonが実行されるようにしたいです
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
+2
cgiファイルに実行権限はついていますか?
chmod +x /Applications/MAMP/cgi-bin/py.cgi
などで試しに実行権限をつけてみてはいかがでしょう
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
checkベストアンサー
+1
Anacondaがどういう挙動をするものかよく知らないのですが、私の環境ではMAMPの設定はデフォルトのままで、py.cgiのパーミッションを755にしておけばそのままhtdocsに放り込めば読まれています。
Sierra 10.12.6, MAMP 4.2(845), python3.6.2 [via homebrew]
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 89.97%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
CHERRY
2017/09/03 17:24 編集
Webブラウザに表示されたエラーメッセージではなく、MAMP のログに 1行だけでなく、もうすこし詳細なエラーメッセージが残っていないでしょうか?
fiwa
2017/09/03 17:34
普通にhtdocsに入れてもダメなのですか?
SoraSue
2017/09/03 17:40
[Sun Sep 03 17:23:41 2017] [error] [client ::1] env: /Users/(僕のユーザー名)/.pyenv/versions/anaconda3-4.4.0/lib/python3.6: Permission denied [Sun Sep 03 17:23:41 2017] [error] [client ::1] Premature end of script headers: py.cgiというエラーログが出ました。
SoraSue
2017/09/03 21:37
みなさんの協力のおかげで、無事pythonのcgiを実行させられました!以下の3点を修正して直りました。①chmod +xでファイルに実行権限を与える。②シバン行では、anacondaのpythonではなく、/usr/local/bin/python3.6を指定する。③httpd.confのScriptAriasでcgiファイルを実行したいフォルダを指定する。