为什么 stat() return -1 即使文件存在 [RHEL 7.2]
why stat() return -1 even if file exists [RHEL 7.2]
我正在为 Apache Server 开发一个模块。在那,我试图从路径 /tmp/_clusterMemberName/ 使用 stat(const char *filename, struct stat *buf) 函数读取文件。我的问题是 stat() 函数返回 -1,即使文件存在于路径中。如果我将文件位置从 /tmp/_clusterMemberName/ 更改为 /opt/ 然后 stat() 函数工作正常。请帮我找出原因。
最可能的原因是 /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
我正在为 Apache Server 开发一个模块。在那,我试图从路径 /tmp/_clusterMemberName/ 使用 stat(const char *filename, struct stat *buf) 函数读取文件。我的问题是 stat() 函数返回 -1,即使文件存在于路径中。如果我将文件位置从 /tmp/_clusterMemberName/ 更改为 /opt/ 然后 stat() 函数工作正常。请帮我找出原因。
最可能的原因是 /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