我需要使用PHP運行unix at
命令。如何做到這一點? curl
不是我正在做的選項。如果我試圖運行它只是exec('at')
它沒有迴應。但是,如果我使用ssh運行它,它工作正常。所以我想這是權限/路徑問題。使用exec()運行unix`at`命令
2
A
回答
3
我想你有一些真正的at
命令行,因爲只有at
是無效的語法。你的命令應該包含一些參數。
但是,也許你的問題是at
不在$PATH
。嘗試使用通常爲/usr/bin/at
的完整路徑運行。用whereis at
檢查。
3
記住「at」從標準輸入接收它的腳本,所以你需要使用popen()打開一條到at命令的管道。將您的命令寫入該管道並關閉它。在打開管道時,您希望「at」運行該命令的時間應該是命令行的一部分。
<?php
$r = popen('/usr/bin/at noon');
fwrite($r,"ls -l");
pclose($r);
?>
1
運行cat /etc/passwd
檢查whitch外殼也使用apache用戶,如果是bin/false
可以不「在」從apache用戶運行。
我發現了針對此問題的技巧通過運行shell命令,這樣的事情之前,出口超過斌/ bash shell中:
出口SHELL = /斌/慶典;回聲「shell命令」| at:time::date:
並將它作爲php exec()函數的參數傳遞。
通過這種方式,您將能夠從apache運行'at'調度。
1
原因是在文件「/etc/at.deny」中。掃描該文件,您將看到一行「www-data」,這是apache2正在運行的用戶(本例中文件的最後一行)。這會拒絕用戶「www-data」運行「at」命令。只需從/etc/at.deny刪除該行。然後你可以使用「shell_exec」運行「at」。
希望它有幫助。
相關問題
- 1. 使用maven-exec-plugin運行命令行
- 2. 使用scp命令Java運行EXEC
- 3. 如何使用exec()命令運行a.out
- 4. 使用exec()系列運行「cd」命令
- 5. 無法使用exec命令運行PHP
- 6. 使用JAVA和UNIX運行Pig命令
- 7. 使用C#運行unix命令
- 8. 使用AT命令
- 9. 與-exec find命令不運行-exec命令
- 10. 從Django運行unix命令
- 11. 分裂Unix命令用於與EXEC
- 12. 用apache commons運行交互命令exec
- 13. 嘗試使用X命令從SAS EG運行UNIX命令
- 14. 使用Windows運行python腳本AT命令行提示
- 15. 與運行時執行命令(時)EXEC
- 16. 如何使用c#執行AT命令#
- 17. C#類使用AT命令?
- 18. 使用PHP執行exec()命令來運行WINRS/WinRM的在cmd
- 19. PHP exec()不運行所有命令
- 20. 爲什麼要運行exec命令?
- 21. 從php運行腳本exec命令
- 22. 使用UNIX命令
- 23. 正確使用exec命令在unix中調用wget
- 24. 用於挑選運行命令的Unix命令
- 25. 使用sudo執行bundle exec命令
- 26. 使用ssh2執行多個命令exec
- 27. 用xargs命令使用docker exec運行`bash`
- 28. 在命令:AT + QASP,AT + EASP
- 29. AT命令 - USSD
- 30. AT命令PHP
只需要注意一點,你必須用'popen'來使用「mode」,像這樣:'$ r = popen('/ usr/bin/at noon','r');' – Ajax 2012-11-05 08:55:26
@Ajax,good catch 。例子中的模式應該是'w'。 – jbruni 2013-01-07 22:37:40
對不起,我的壞,你是對的... – Ajax 2013-01-08 23:53:34