このスクリプトをPHPで実行する必要があります。ユーザー www-data
できないので、sudoers
ファイルを変更しました。
www-data ALL=(user2) NOPASSWD: /home/user2/bin/test.sh
スクリプトは、次のコマンドを使用してphpで実行されます。
Sudo -u user2 /home/user2/bin/test.sh
ここは test.sh
脚本:
#!/bin/bash
#Stopping previous server
screen -S minecraft -X stuff "stop^M"
#deleting the map file
rm -Rf /home/minecraft/Serveur/*/
# deleting the properties file
rm -f /home/minecraft/Serveur/server.properties
#new server properties
cp /home/minecraft/MapsEtServ.prop/Bloody/server.properties /home/minecraft/Serveur/server.properties
#new map
cp -R /home/minecraft/MapsEtServ.prop/Bloody/'Bloody Mess v1.0' /home/minecraft/Serveur/'Bloody Mess v1.0'
#launching the game server
screen -dmS minecraft Java -Xmx4096M -Xms4096M -jar /home/minecraft/Serveur/minecraft_server.jar nogui
/home/minecraft/Serveur
および/home/minecraft/MapsEtServ.prop
パーミッションは777に設定されます。
SSH経由でスクリプトを実行するとどうなりますか:すべて正常に動作します。
しかし、phpで実行すると、画面が停止し、ファイルが貼り付けられて画面が起動します。ただし、問題があります。ゲームサーバーが実行されていません。
編集:問題は解決されました!スクリプトの冒頭にcd/home/minecraft/Serveur /を追加したところ、すべて正常に動作します:)
ターミナルから、Sudo visudo
コマンドを使用して、sudoers
ファイルを編集し、次の行をそのまま追加します。
www-data ALL=(ALL) NOPASSWD: /home/user2/bin/test.sh
この意味で https://help.ubuntu.com/community/RootSudo#Allowing_other_users_to_run_Sudo を参照してください。
次に、phpではSudo /home/user2/bin/test.sh
コマンドのみを使用します。例えば:
<?php Shell_exec('Sudo /home/user2/bin/test.sh'); ?>