【发布时间】:2014-10-30 05:51:30
【问题描述】:
生日,
我有一个运行游戏服务器的分离屏幕,我正在使用 bash 脚本 command.sh 将命令发送到分离屏幕。
在终端中,我可以使用以下命令,服务器成功执行命令:
./command.sh 'any command'
但是,一旦我使用 PHP 调用脚本:
<?PHP
if($_POST) {
$commandString = $_POST['inputCommand'];
$output = shell_exec('./command.sh $commandString');
echo "<pre>$output</pre>";
}
?>
屏幕返回错误:
No screen session found.
我尝试将 bash 脚本的权限更改为 777,并尝试将其放在 web 根目录中。
有没有人知道为什么 php 不能运行脚本,但我可以在终端中运行脚本?
要求的其他信息
command.sh
#!/bin/bash
screen -S "minecraft" -X stuff "$@"$'\015'
【问题讨论】:
-
你能运行像
ls这样的简单命令吗? -
通过 shell 执行,是的。但不是通过屏幕。
-
可以发
command.sh的内容吗?该脚本是否以与 PHP 脚本相同的用户身份运行? -
添加到我的帖子末尾,注意这个脚本在终端中执行时可以正常工作。我不明白如何告诉 PHP 正在执行文件的用户是什么。是否有它使用的默认用户?
-
无论您希望完成什么,
chmod 777都是错误并且存在严重的安全风险。如果您有在面向 Internet 的服务器上拥有一个全球可写脚本,您绝对想检查它是否已被滥用以渗透您的网络安全。