私たちは、Heroku上にnodejsアプリケーションを持っています。どこかのコードでは、私はHerokuのはbashからwkhtmltopdfコマンドを実行すると、実行可能ではchmod 0777.場合でも、我々はこのHerokuのnodejsアプリケーションから実行ファイルを呼び出すと、 "Permission Denied"が表示されますが、bashから実行するとOKです。どうして?
var spawn = require('child_process').spawn;
var child = spawn('/bin/bash', ['-c', '/app/node_modules/wkhtmltopdf-prebuilt/bin/linux64/bin/wkhtmltopdf' + ' | cat ; exit ${PIPESTATUS[0]}']);
を実行します。しかし、我々はそうするならば、我々はPermission denied
を取得し、それだけで正常に動作します。ノード内から実行すると、Permission Denied
となります。
さらに、ノード内のノードがfs.readFileSync()
、さらにfs.unlinkSync()
の場合は、問題は発生しません。ファイルは読み込み、書き込み、削除することができます。
誰かがポインタを持っていますか?
ノード内でファイルを読み込もうとしましたか?それが実行の問題か単なる読書の問題かどうか見てください。あなたのスクリプト(シバン)の最初の行は何ですか? –
bashとnodejを同じユーザーとして実行していますか? nodejsが実行中であるため、そのファイルを読み書きする権限がない可能性があります。 – euphoria83
@ Jean-FrançoisFabreファイルのオープン、書き込み、削除は問題ありません。答えを更新しました。また、私たちが使用する文字コードも更新しました。それはおそらく水の下で教科書のようなシバンを生み出すだろうか? –