2017-06-20 4 views
0

問題:

私はStockfishチェスエンジンとの通信のためのサブプロセスを作成し、Herokuの上で実行されているPythonのWebアプリケーションを持っています。私のローカルマシン上JustWorks ™Herokuの - >のPython:実行ファイルを起動するには、サブプロセスを使用して取得します[アクセス許可が拒否されました]

すべてが、しかし、Herokuの上のプロジェクトを展開しようとすると、私はPermissionError: [Errno 13] Permission denied

以下

を言って、エラーを取得し、私はこれを展開しようとしたときから、Herokuのログが含まれています。私は他の人々がHerokuのは、同じダイノ内stockfishエンジンを実行しているアプリ知っている

は、しかし、私は多くの幸運作業それを得ることで私を支援するためのリソースを見つけることがありませんでした。どんな助けもありがとうございます。ありがとう!


ログ:stockfishの実行可能ファイルは、Herokuのサーバ上で実行可能な権限を持っている、となるために必要なものをしませんでした :

bash 2017-06-20T22:32:48.419694+00:00 heroku[web.1]: Starting process with command `python server.py` 2017-06-20T22:32:51.933668+00:00 app[web.1]: Traceback (most recent call last): 2017-06-20T22:32:51.933687+00:00 app[web.1]: File "server.py", line 23, in <module> 2017-06-20T22:32:51.933882+00:00 app[web.1]: engine = chess.uci.popen_engine(DIR_PATH + "/stockfish_8_x64") 2017-06-20T22:32:51.933884+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/chess/uci.py", line 1405, in popen_engine 2017-06-20T22:32:51.934623+00:00 app[web.1]: PopenProcess(engine, command, **kwargs) 2017-06-20T22:32:51.934625+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/chess/uci.py", line 404, in __init__ 2017-06-20T22:32:51.934874+00:00 app[web.1]: self.process = subprocess.Popen(command, **popen_args) 2017-06-20T22:32:51.934877+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/subprocess.py", line 707, in __init__ 2017-06-20T22:32:51.935286+00:00 app[web.1]: restore_signals, start_new_session) 2017-06-20T22:32:51.935288+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/subprocess.py", line 1326, in _execute_child 2017-06-20T22:32:51.935988+00:00 app[web.1]: raise child_exception_type(errno_num, err_msg) 2017-06-20T22:32:51.936008+00:00 app[web.1]: PermissionError: [Errno 13] Permission denied 2017-06-20T22:32:52.051035+00:00 heroku[web.1]: State changed from starting to crashed 2017-06-20T22:32:52.035235+00:00 heroku[web.1]: Process exited with status 1

+0

私はあなたがgit' 'で' stockfish'実行可能ファイルを持っていることを前提と?その場合は、ファイルに実行権限があることを確認する必要があります。たとえば、https://stackoverflow.com/questions/6476513/git-file-permissions-on-windows(コマンドがまだ* nixにあっても適用されます) – bimsapi

+0

ヘロクでどのようにしますか? dynoは分解され、毎回再起動されますか?私はそれをProcfileコマンドの一部として行うべきでしょうか? 'web:chmod + x stockfish_8_x64 && python server.py' – TheAmazingFedex

+0

ファイルのパーミッションを保持することができます。私は 'git ls-files HEAD'(またはブランチ名)を使ってgitが持つ権限をチェックします** ** 1)**。最初のフィールドの最後の3桁はファイルモードです(8進数)。その後、** 2)**ヘロクファイルシステム上のどのようなアクセス権があるか( 'heroku run 'ls -al''を介して)その後、** 3)** git permsに実行がない場合は、それを追加して再デプロイします。最後に、** 4)**問題が解決しない場合は、アプリケーション開始時にpermsにパッチを当てる方法を見つけてください(procfileではなくos.chmod()経由で)。 – bimsapi

答えて

0

コメントオフに基づいて自分の質問に答えるために明示的に追加。元の質問に対するコメントのガイダンスに従って、私はserver.pyを変更して実行可能権限をストックフィッシュ実行可能ファイルに追加することができました。

Source -> SO: Simple chmod +x in python

関連する問題