2012-01-14 89 views
0

我知道這是一個簡單的問題,但我不能爲我的生活得到它的工作。如果我通過SSH(linux)登錄到我的服務器並鍵入:/home/username/public_html/x/foo.cgi f=subscribe l=list [email protected]腳本運行完美。但是,如果我嘗試通過PHP運行腳本,例如:shell_exec("/home/username/public_html/x/foo.cgi f=subscribe l=list [email protected]");什麼都不會發生。從PHP腳本運行一個linux命令?

任何人都可以指向正確的方向嗎?

提前致謝!

Tre

+0

是'foo.cgi'的一個php腳本?或只是可執行的二進制? – 2012-01-14 07:04:57

+0

網絡服務器不太可能擁有訪問您的主目錄的權限 - 請記住,它運行在與您自己的帳戶完全不同的用戶標識下。 – 2012-01-14 07:16:08

+0

這是一個CGI腳本。達達郵件,確切地說。我對這一切都很陌生,所以不確定我需要做什麼 – tr3online 2012-01-14 08:04:15

回答

1

「Nothing happens」不是一個非常具有描述性的錯誤消息。儘管如此,還是有三種可能性:

  1. 服務器託管環境與shell環境之間的差異。
  2. 您的服務器或託管站點可能已禁用了shell_exec或其他功能。
  3. 您可能需要將PHP作爲您在SSH中以相同用戶身份運行(或以其他方式獲得正確權限)。
  4. 由於配置錯誤或錯誤使用,堆棧中的其他部分出現混亂。

請隨意選擇。檢查你的日誌。確保你沒有留下任何可供攻擊者利用的洞。

0

如果你在管理服務器,很可能這是一個權限問題。您的網絡服務器以www-data或某些類似用戶身份運行。它需要腳本文件的執行權限才能運行它。嘗試使用chmod命令更改腳本的所有者,或使用chown命令爲您嘗試運行更自由的訪問權限的文件提供更改。

要考慮的另一件事是,如果PHP is running in safe mode shell_exec可能被禁用。