2017-02-02 12 views
1

Apache Serverのモジュールを開発中です。その中で、stat(const char * filename、struct stat * buf)関数を使用して、/ tmp/_clusterMemberName /というパスからファイルを読み込もうとしています。私の問題は、ファイルがパス上にあっても-1を返すstat()関数です。ファイルの場所を/tmp/_clusterMemberName/から/opt/に変更した場合、stat()関数は正常に動作しています。理由を調べるのを手伝ってください。ファイルが存在してもstat()が-1を返す理由[RHEL 7.2]

+0

で変更を永続化)、値はerrnoがあり、それが収まるかどうかを調べますstatのmanページのケースの1つ。 –

答えて

0

最も可能性が高い理由は、/tmpにアクセスできないことです。

statが返すerrnoの値を調べる必要があります。 EACCESの場合は、ユーザーに/tmpへのアクセス権がないことが原因です。それがEPERMの場合、原因はSELinuxポリシーであり、httpdが/tmpにアクセスするのを妨げます。 SELinuxを使用している場合は、httpd_selinuxマンページを認識していることを確認してください。あなたがで/tmpからhttpdアクセスを有効にすることができ

setsebool httpd_tmp_t 1 

、あなたはSTAT(呼び出した後

setsebool -P httpd_tmp_t 1 
+0

ありがとうございました。私のマシンでは、SELinuxを無効にして、errno値2を取得しています。 – ashutosh

+0

同じ設定がRHEL6マシンで動作しています。 – ashutosh

+0

errno値2はENOENTです。 '/ tmp/_clusterMemberName'にスペルミスがないのは確かですか? –

関連する問題