我送屏幕命令爲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