この解決策はうまくいかないようです。シェルスクリプトで SetUID を使用したことがないので、理由はわかりません。ただし、誰かが参照したい場合に備えて、この回答をここに残しておきます。
セキュリティ上の理由から、コードを bash ファイルに入れることをお勧めします。SetUID-bitを使用して、他のユーザー内から root として bash ファイルを実行します。この方法では、root 以外のユーザーがファイルに書き込めなくなり、sudo で処理する必要がなくなります。そうしないと、php プロセスがルートとしてコードを実行できるようになりますが、これはほとんどの場合、非常に悪い考えです。
出力が得られない理由は、おそらく、パスワードを要求され、exec がパスワードを入力する方法がないためです。
編集:
PHP 呼び出しを次のように変更します。
<?
exec("/var/www/MountTheDisk.sh");
?>
このようなコンテンツを含む bash ファイル (/var/www/MountTheDisk.sh) を作成するよりも
#!/bin/sh
// this script will be executed as root
diskutil mount /dev/xvdb1 /mnt/theDisk/
echo trying to mount
ここで SetUID ビットを設定し、所有者を root に変更します。(ルートシェル経由で行う必要があります)
// make script executable
chmod +x /var/www/MountTheDisk.sh
// setuid bit
chmod u+s /var/www/MountTheDisk.sh
// change owner to root
chown root:root /var/www/MountTheDisk.sh
注:すべてのユーザーがこのファイルを実行できます。どの呼び出しでも、root として実行されます。