2017-02-02 58 views
1

我正在爲Apache Server開發一個模塊。在那,我試圖從路徑/ tmp/_clusterMemberName /使用stat(const char * filename,struct stat * buf)函數讀取文件。我的問題是stat()函數返回-1,即使文件存在於路徑上。如果我將文件位置從/tmp/_clusterMemberName/更改爲/opt/,則stat()函數工作正常。請幫我找出原因。爲什麼stat()返回-1即使文件存在[RHEL 7.2]

+0

後調用統計(變更持久),找出值錯誤號有,看看它是否適合stat中手冊頁中的一個案例。 –

回答

0

最可能的原因是/tmp無法訪問。

您需要查看stat返回的errno值。如果它是EACCES,原因是用戶沒有訪問/tmp的權限。如果是EPERM,原因可能是SELinux策略阻止httpd訪問/tmp。如果您使用的是SELinux,請確保您知道httpd_selinux聯機幫助頁。

您可以啓用httpd訪問/tmp有:

setsebool httpd_tmp_t 1 

,並與

setsebool -P httpd_tmp_t 1 
+0

感謝您的輸入。在我的機器上,我保持禁用SELinux並獲取errno值2. – ashutosh

+0

我想分享一下,在RHEL6機器上使用相同的設置。 – ashutosh

+0

錯誤值2是ENOENT。你確定你沒有'/ tmp/_clusterMemberName'中的拼寫錯誤嗎? –

相關問題