PHPコードがWebサーバーによって実行されている場合、ubuntuのユーザー「www-data」の下で実行されています。
おそらく www-data にはシャットダウンする権利がありません。これは正常なデフォルトです。
www-data sudo にパスワードを指定せずにシャットダウンする権限を与え、sudo を使用して再起動を呼び出すことができます。
sudo 構成を編集する前に、よく見てman sudoers
、セキュリティへの影響を確実に理解してください。これにより、PHP スクリプトにサーバーをシャットダウンする権利が効果的に与えられます (テストされていません)。
# /etc/sudoers (edit using the visudo command)
Cmnd_Alias SHUTDOWN = /usr/sbin/shutdown
Cmnd_Alias HALT = /usr/sbin/halt
Cmnd_Alias REBOOT = /usr/sbin/reboot
Host_Alias LOCALHOST = 127.0.0.1
www-data LOCALHOST = NOPASSWD: SHUTDOWN, HALT, REBOOT
PHP では、以下を使用できます。
shell_exec("/usr/bin/sudo /usr/sbin/reboot");