2011-07-02 56 views
1

執行代碼它完美的作品,但是當我試圖通過PHP執行此:PHP不會在cmd中

system("s3cmd put --acl-public --guess-mime-type /html/file.png s3://bucket/files/file.png");

什麼都沒發生。有沒有人有一個想法,爲什麼它不工作?我是否必須修改php.ini中的設置或者我做錯了什麼?

+0

你是否想要使用exec()? – DesignerGuy

+0

我也嘗試過exec,它不起作用。 – John

+0

它是什麼類型的服務器? (我相信* nix命令是以'www-data'的形式運行的,並且有些命令被排除在外) – DesignerGuy

回答

0

有可能等系統命令的限制,你應該嘗試會在error_log看,增加error_reporting級別或在php.ini中禁用的safe_mode

+0

Safe_mode已關閉。出於某種原因,PHP不會生成error_log。 php.ini中的設置看起來很好。如果這是一個權限問題,我應該怎麼做才能解決這個問題? PHP文件的所有者被設置爲root,在httpd.conf中,所有者被設置爲apache,這可能是問題嗎? – John

1

我第二次的建議,看看Apache日誌文件,但我會打賭,這是一個權限問題(我有這個問題......)。 Apache(httpd?)對/html/file.pngs3://bucket/files/file.png有讀寫權限嗎? s3cmd是否需要特殊權限?你需要使用gksudo嗎?

+0

我檢查了Apache的錯誤日誌文件,它報告錯誤:找不到配置文件。請使用--config選項。「這是幹什麼用的? – John

+0

這聽起來像是[s3cmd](http://s3tools.org/s3cmd)命令問題。我猜?它將配置數據存儲在您的主目錄中。您可能只需從您的家庭目錄複製它。當然,你也可以使用你的Apache用戶並運行s3cmd --configure – cwallenpoole

1

s3cmd在.s3cfg文件的用戶主目錄中查找。在你的情況下,apache可能是運行該程序的用戶,而apache沒有.s3cfg文件。

您需要再次以您打算使用s3cmd的用戶身份運行此操作。

/usr/bin/s3cmd --configure