質問: ubuntuで建てられたサーバ上にプログラムを配置し実行ファイルを生成し、 phpにアクセスした際のパラメータによって処理を実行させたいと思っています。 php上でexec、system、passthruなどの命令に"./a.out"などの文字列を渡して実行したいのですが、 sshターミナル上で直接"./a.out"と実行すると成功しますが、上記3命令を通して実行しても成功しません。 ・このやり方で、どのようなエラーによって失敗しているのかの情報を取得する方法はありますか? ・考えられる原因と、その対策がありましたらお教えください。 追記 passthruの第二引数(return_var)の値はint(139)となっていました。 0でないのでエラー終了を示していることはわかるのですが、139という値は何を示しているのか、はっきりとした資料が見つからず......。 以下のサイトによると、「The operation is not permitted.」を表す終了ステータスだそうですが、 権限の問題は対応したはずです。 「www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin」 https://groups.google.com/forum/#!topic/phantomjs/M0_TM4_W3ZI 以下は関連すると思われる取得出来た限りの情報です。 ``` whoami www-data cat /etc/group www-data:x:33: cat /etc/passwd www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin ls -l -rwxrwxr-x 1 ******* www-data 8619 Apr 26 20:55 a.out ←実行ファイル ``` これらの状況から、原因は推測できますでしょうか?よろしくお願いします。
回答: 下記、二つ可能性があるかなと思います。 * SELinuxが有効で、その制限で実行できない。 セキュリティ強化のためSELinuxが有効になっている可能性があります。SELinuxが有効かどうかを確認して、有効の場合は、無効にしてどうするのかを見てください。 * php.ini等で制限している セキュリティ強化のためexecなどを禁止している可能性があります。php.ini等のPHPの設定を確認してみてください。