【问题标题】:No screen session found when a screen is definitely running屏幕确实在运行时未找到屏幕会话
【发布时间】: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 的服务器上拥有一个全球可写脚本,您绝对想检查它是否已被滥用以渗透您的网络安全。

标签: php linux bash


【解决方案1】:

似乎您正试图从另一个用户(默认为 www-data)从 Web 服务器启动 php 脚本。

要将一些文本发送到屏幕,您必须以屏幕所有者身份运行命令,因为 /var/run/screen/S-user/ 中的屏幕权限为 700

请尝试更改您的字符串:

sudo -u owner_of_the_screen ./command.sh $commandString

【讨论】:

  • 将 www-data 添加到 sudoers 并尝试了您的字符串,它不起作用。
猜你喜欢
  • 1970-01-01
  • 2014-04-11
  • 2015-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多