2012-03-23 42 views
0

我送屏幕命令爲PHP,但我怎樣才能解決這個屏幕> PHP>無屏幕會發現

例如

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

我送這個命令

錯誤:沒有屏幕會話發現。

但屏幕運行

任何想法?

感謝

+0

除了我不知道你在說什麼的事實,在我看來這是一個系統管理員的問題? – markus 2012-03-23 14:02:35

+0

你是從瀏覽器還是從命令行調用這個PHP腳本?如果它來自瀏覽器,我的猜測是PHP用戶(您的web服務器運行的用戶)與啓動屏幕的用戶不同。 – 2012-03-23 14:10:41

+0

是調用瀏覽器,但 服務器屬於我 只能在一個屏幕 如果我登錄ssh和運行此命令 ||| screen -S screen444 -X -p0 eval'stuff「restart」^ m' ||| 成功工作。 但執行瀏覽器時 不工作(找不到屏幕會話) – user1288273 2012-03-23 14:23:53

回答

0

這不會幫助,如果你的* nix,但如果Apache是​​運行作爲Windows服務,您可以通過運行services.msc更改登錄。在屬性中的登錄選項卡上,將登錄更改爲:「此帳戶」,並根據需要填寫其餘部分。

我這樣做是爲了讓PHP可以使用我開始的會話。不過,我只能以screen -ls查看會話。我不能-X stuff他們出於某種原因,沒有錯誤和沒有輸出。我的類似問題:cygwin screen session problems through php

+0

我想出瞭如何填充..請參閱我的問題以獲取詳細信息 – baberlicious 2012-03-30 21:15:56

0

我想我可能遇到了同樣的問題。

當我在shell中運行screen -ls時,它會在/run/screens/S-root中查找。

當我在PHP中使用bash中的screen -ls時,它看起來在/run/screens/S-http

$USER在這兩種情況下都是root - 但也許PHP在它添加自己的沙箱時根本不會更新環境變量。

如果您在.screenrc設置multiuser onacladd httpscreen -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 [email protected]$2"

其中$usernamehttp$2是一個IP地址。

您可以發送命令來這樣的:

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

並將其連接到root(或任何其他您正在使用的帳戶)是這樣的:

screen -r http/matservi

相關問題