如何修复此屏幕> php>找不到屏幕会话

时间:2012-03-23 13:26:06

标签: php

我发送了php的屏幕命令但是

例如

<?php
system("screen -S screen444 -X -p0 eval 'stuff \"restart\"^m'")
?>

我发送此命令

错误:找不到屏幕会话。

但屏幕正在运行

有任何想法吗?

由于

2 个答案:

答案 0 :(得分:0)

如果您是* nix,这将无济于事,但如果Apache在Windows上作为服务运行,您可以通过运行services.msc来更改登录。在属性中,在“登录”选项卡上,将“登录为:”更改为“此帐户”,并根据需要填写其余部分。

我这样做是为了让PHP可以使用我开始的会话。但是我只能screen -ls才能看到会话。由于某种原因,我不能-X stuff他们,没有错误,也没有输出。我的类似问题:cygwin screen session problems through php

答案 1 :(得分:0)

我想我可能遇到了同样的问题。

当我从shell中的bash运行screen -ls时,它会查看/run/screens/S-root

当我在PHP中使用bash运行screen -ls时,它会查找/run/screens/S-http

在这两种情况下,

$USER都是root - 但是当PHP添加自己的沙盒时,PHP根本不会更新环境变量。

如果您在multiuser on中设置acladd http.screenrcscreen -ls仍然会失败,因为它无权查看/run/screens/S-root

相反,您应该设置multiuser onacladd root,然后将屏幕作为属于http的进程启动。例如,我的起点是:

su - $username -c "screen -A -m -d -h 100 -c /tau/sys/commands/-config/matservirc -S matservi ssh matserv@$2"

其中$usernamehttp$2为IP地址。

您可以像这样发送命令:

su - $username -c "screen -S matservi -p 0 -X stuff \"cat > ~/server/matlink/access/matinput(换行符)\""

并将其附加到root(或您正在使用的任何其他帐户),如下所示:

screen -r http/matservi