2011-07-19 126 views
1

我已經要瘋了這個..GPG加密失敗:文件打開錯誤

我已經安裝的GnuPG我CentOS的服務器上,我嘗試加密上傳的文件(通過一個PHP頁面上傳)。在服務器上通過命令行,它完美地工作。但是,通過PHP腳本時,出現此錯誤:

gpg: /path-to-my-file/my-file: encryption failed: file open error 

用戶的Apache(我認爲這是用來運行exec命令)具有讀/寫在文件的目錄。

該文件上傳正常(我可以看到它,因爲我刪除了未加密的文件從我的代碼刪除),並可以通過PHP網站正確刪除。

我運行的命令如下

/path-to-gpg/gpg --homedir=/path-to-my-home-gnupg/.gnupg -e -r [email protected] the-unencrypted-file 

任何想法,我怎麼能解決呢? 感謝

回答

1

有幾件事情要檢查:

  • 運行system("ls " . escapeshellarg($file))和檢查結果 - 它是文件沒有發現?沒有權限?這將幫助您調試。
  • 運行system("whoami")以確保PHP以您認爲的身份運行。
  • 運行echo "<pre>ls " . escapeshellarg($file) . "</pre>"然後複製並粘貼命令並從shell運行它,以確保文件的路徑與您預期的相同。

而且,我相信,CentOS的運行SELinux的默認...如果你有安裝它,檢查日誌(在/var/log/),看看是SELinux防止阿帕奇從執行GPG。

+0

讓我檢查了這一切,回來與結果 –

+1

文件在那裏。我正在運行Apache ...但錯誤日誌實際上非常有用,所以感謝您指出。我發現,我的公開發行並切斷了實際由root擁有而不是由apache擁有的地方。結果apache無法讀取它們,也無法加密文件。將所有權改爲Apache解決了這個問題。謝謝大衛 –

+0

真棒,很高興我能幫上忙。 –

0

嘗試在詳細模式與實際apache用戶權限運行該命令:

su apache -c /path-to-gpg/gpg -vv ... 
相關問題