CentOS6.3x64を使用します。
PHPスクリプトからwkhtmltopdf
(from here )を実行しようとしています。SSH経由で直接wkhtmltopdf-AMD64
を正常に呼び出すことができます。 PHP exec
経由、終了コード127で常に失敗します。パスは正しいので問題ではありません。exec
を使用してls
やid
などを正常に呼び出すことができるため、問題が発生しているようです。 wkhtmltopdf-AMD64
の呼び出しに固有です。
これはどういうわけか権限に関連していると思いますが、どのような手順を踏むべきかわかりません。プログラムでApache:apache
およびその他の所有権を試しましたが、755の権限があります。
ガイダンスをありがとう!
追記:
上記をさらに明確にしないことをお詫びします-問題がプログラムへのパスに関連していないことを確認しました。絶対パスを使用しています。 (pwd
に関係なく)SSH回線からまったく同じコマンドを問題なく実行できることを確認しました。シェルスクリプトも作成しました。
#!/bin/sh
echo 'hello, world!'
このスクリプトはexec
を介して呼び出すことができ、正しく機能します。ただし、次のように変更すると
#!/bin/sh
echo 'hello, world!'
/full/path/to/wkhtmltopdf-AMD64 'http://www.google.com/' /full/path/to/output.pdf
その後、失敗し、終了コード127を返します。
シェルがバイナリを見つけられないようです。フルパス名で呼び出してみてください(例:/usr/bin/ls
ls
の代わりに)。詳細については、 man bash
私はしばらく前に同じ問題を抱えていました。私の場合、実行ビットが設定されていない場合は126、ビットが設定されている場合は127になります。
後で、システムにないいくつかの共有ライブラリに関連していることがわかりました。バイナリが静的にリンクされている場合でも、システムの共有ライブラリを使用しているようです。
どのライブラリが問題を引き起こしていたかはよく覚えていませんが、この要点: https://Gist.github.com/nghuuphuoc/8282411 は良い出発点だと思います。