2010-12-14 140 views
0

這裏是我的命令:了shell_exec不工作

sudo /usr/local/bin/jpegoptim --max=50 /home/someuser/public_html/reports/images/r121662.jpg 

這個命令應該壓縮的圖像。我試着使用反引號操作符和shell_exec來運行這個命令,兩者都不起作用。該文件不壓縮。

但是,當我直接在登錄爲someuser的shell中運行它時,會運行此命令。我修改了sudoers以接受該命令而不需要密碼。當我在shell中運行它時,該文件被壓縮。

Apache配置爲使用suPHP運行,並且PHP文件也屬於someuser。我通過編寫一個測試php腳本,並在瀏覽器中運行它,進一步確保了這一點。這告訴我腳本確實正在運行someuser

此外,safe_mode已關閉。

編輯:好吧,我得到它輸出錯誤

sudo: sorry, you must have a tty to run sudo 

現在,這是什麼意思?

+0

它在shell中運行時是否輸出某些內容? – Catalin 2010-12-14 13:32:23

+0

不,我試着回顯輸出,根本沒有輸出 – HyderA 2010-12-14 13:33:40

+0

你可以申請任何其他的命令,並且工作嗎? – JohnSmith 2010-12-14 13:45:08

回答

1

感謝Catalin,我得到了一個輸出。它說sudo: sorry, you must have a tty to run sudo需要requiretty被禁用someuser。這是我得到的最佳解決方案,如果有一種方法可以禁用單個用戶調用單個命令的requiretty,請讓我知道。

+0

很高興我可以幫助您進行調試:P – Catalin 2010-12-14 15:20:15

+0

您可以使用sudoers上的此條目爲單個用戶啓用requiretty:默認值:someuser!requiretty – timh 2011-10-28 21:33:47

0

sudo通常需要終端輸入(即​​),因爲它會在允許您執行命令之前嘗試詢問用戶密碼。你真的需要使用sudo來運行命令嗎?嘗試刪除sudo

+0

獲取沒有sudo的權限錯誤 – HyderA 2010-12-14 15:04:21

+0

您能否提供特定的錯誤消息? '/ home/someuser/public_html/reports/images/r121662.jpg'和'/ home/someuser/public_html/reports/images /'有什麼權限? – 2010-12-14 21:17:39

0

嘗試sudo -S以查看是否將它設置爲從標準輸入讀取密碼(即使它不需要一個密碼)將繞過tty的測試。