【问题标题】:Execute shell script from its folder location and not caller folder location?从其文件夹位置而不是调用者文件夹位置执行shell脚本?
【发布时间】:2017-05-12 15:42:43
【问题描述】:

我在 shell 脚本中有一个问题。我在/var/www 有一个 apache2 网络服务器。我有index.php,它的 php 代码是:

<?php system('sh /minecraft/server1/starter1.sh', $retval); ?>

starter1.sh的代码:

sudo -i screen -d -m -S Server1 java -Xmx1G -jar /minecraft/server1/spigot.jar

如果我进入/minecraft/server1/ 并执行sh ./starter1.sh,服务器将正常启动,但是当我从index.php (/var/www) 调用脚本(starter1.sh) 时,服务器似乎从@987654331 启动@。如何正确地从网页 (/var/www/html/index.php) 调用启动器 (/minecraft/server1/starter1.sh)?

如果我执行了错误的命令,请告诉我,但请帮助我解决问题

【问题讨论】:

  • 你如何判断你的命令运行正常并在 /root 中启动??

标签: php linux shell


【解决方案1】:

只需更改您的脚本并在 sudo [..] 之前添加一个 cd /minecraft/server1/

编辑:在 sudo 之后删除 -i

【讨论】:

  • 如果您需要从该路径启动它,因为您需要将保存的文件更改为 Server1 java -Xmx1G -jar /minecraft/server1/spigot.jar 到
  • 哦,抱歉,我在 sudo 之后没有看到 -i。它将您当前的密码更改为根密码。尽量避免:sudo screen -d -m -S Server1 java -Xmx1G -jar /minecraft/server1/spigot.jar
  • 谢谢你,罗伯托!这件事解决了我的问题。再次感谢!
【解决方案2】:

您可以使用以下方法更改工作目录: chdir("current_directory/.../");

所以代码应该是:

<?php
  chdir("current_directory/.../");
  system('sh /minecraft/server1/starter1.sh', $retval);
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-13
    • 2017-11-17
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多