質問: linux ubuntuでのphp shell_exec()権限 linuxサーバーを使用してphpアプリケーションを開発しています。私の問題は、いくつかのexeファイルを呼び出すためにshell_exec()を実行することが機能しないことです(実際にはexeではなく、linux実行可能ファイルの一種です)。echo shell_exec("whoami"); 私はデーモンを得たecho shell_exec("ls") ファイル名を取得しましたがecho shell_exec("php -v") 何もない、空白のページecho shell_exec("php ....bla bla bla") 空白のページも。端末(ユーザーhu)で入力すると、これらのコマンドはすべて機能します。私は数時間グーグルを検索しました、人々は許可のためにそれを言います。 linuxの経験はありません。 phpでプログラムを実行するにはどうすればよいですか?
回答: apacheのユーザー_www-data_には、sudoを使用して特定のアプリケーションを実行する権限を付与する必要があります。 コマンド_sudo visudo_を実行します。実際には、ファイルを_etc/sudoers_で編集します。これを行うには、ターミナルで_sudo visudo_を使用して、編集する複製(temp)sudoersファイルを編集します。 ファイルの最後に、次の例を追加します。-restart smokepingのコマンドとphpコマンドを使用して、質問の別のアクションを実行する場合は、 _www-data all=nopasswd: /etc/init.d/smokeping/restart, usr/bin/php_(これは、スーパーユーザー(root)特権を使用してrestartおよびphpコマンドを実行することを想定しています。また、_usr/bin/_パスでphpコマンドを使用します)ただし、スーパーユーザー権限を使用してすべてのアプリケーションを実行する場合は、上記の代わりに次のコードを追加します。allコマンドではなく、そうしたくない場合があります。非常に危険です。_www-data all=nopasswd: all _3。sudoersファイルを編集した後(visudoによってsudoersの一時ファイルを編集するため、一時ファイル(visudo)を保存して終了し、sudoersファイル。(_wq!_)4.以上です。_shell_exec_ script内で次のようにexec()または_xxx.php_を使用します。_sudoコマンドの前にphpスクリプトで使用します例:-_exec ("sudo /etc/init.d/smokeping restart 2>&1"); _または_shell_exec("sudo php -v"); _だからあなたの問題では、あなたが使用したいコマンドをstep no (2.)に追加します。私が追加し、phpスクリプトをあなたが望むように変更します。ここにあなたと同じ問題があります https://stackoverflow.com/a/22953339/1862107