我送屏幕命令为PHP,但我怎样才能解决这个屏幕> PHP>无屏幕会发现
例如
<?php
system("screen -S screen444 -X -p0 eval 'stuff \"restart\"^m'")
?>
我送这个命令
错误:没有屏幕会话发现。
但屏幕运行
任何想法?
感谢
我送屏幕命令为PHP,但我怎样才能解决这个屏幕> PHP>无屏幕会发现
例如
<?php
system("screen -S screen444 -X -p0 eval 'stuff \"restart\"^m'")
?>
我送这个命令
错误:没有屏幕会话发现。
但屏幕运行
任何想法?
感谢
这不会帮助,如果你的* nix,但如果Apache是运行作为Windows服务,您可以通过运行services.msc
更改登录。在属性中的登录选项卡上,将登录更改为:“此帐户”,并根据需要填写其余部分。
我这样做是为了让PHP可以使用我开始的会话。不过,我只能以screen -ls
查看会话。我不能-X stuff
他们出于某种原因,没有错误和没有输出。我的类似问题:cygwin screen session problems through php
我想出了如何填充..请参阅我的问题以获取详细信息 – baberlicious 2012-03-30 21:15:56
我想我可能遇到了同样的问题。
当我在shell中运行screen -ls
时,它会在/run/screens/S-root
中查找。
当我在PHP中使用bash中的screen -ls
时,它看起来在/run/screens/S-http
。
$USER
在这两种情况下都是root
- 但也许PHP在它添加自己的沙箱时根本不会更新环境变量。
如果您在.screenrc
设置multiuser on
和acladd http
,screen -ls
仍然会失败,因为它没有权限在/run/screens/S-root
看。
取而代之,您应该设置multiuser on
和acladd root
,并将该屏幕作为属于http
的进程启动。我的发车线,例如是:
su - $username -c "screen -A -m -d -h 100 -c /tau/sys/commands/-config/matservirc -S matservi ssh [email protected]$2"
其中$username
为http
和$2
是一个IP地址。
您可以发送命令来这样的:
su - $username -c "screen -S matservi -p 0 -X stuff \"cat > ~/server/matlink/access/matinput
(换行符)\""
并将其连接到root
(或任何其他您正在使用的帐户)是这样的:
screen -r http/matservi
除了我不知道你在说什么的事实,在我看来这是一个系统管理员的问题? – markus 2012-03-23 14:02:35
你是从浏览器还是从命令行调用这个PHP脚本?如果它来自浏览器,我的猜测是PHP用户(您的web服务器运行的用户)与启动屏幕的用户不同。 – 2012-03-23 14:10:41
是调用浏览器,但 服务器属于我 只能在一个屏幕 如果我登录ssh和运行此命令 ||| screen -S screen444 -X -p0 eval'stuff“restart”^ m' ||| 成功工作。 但执行浏览器时 不工作(找不到屏幕会话) – user1288273 2012-03-23 14:23:53