Я разрабатываю модуль для Apache Server. В этом я пытаюсь прочитать файл из пути/tmp/_clusterMemberName/с помощью stat (const char * filename, struct stat * buf). Моя проблема - функция stat() возвращает -1, даже если файл существует на пути. Если я изменил местоположение файла с /tmp/_clusterMemberName/ до /opt/, тогда функция stat() работает нормально. Пожалуйста, помогите мне выяснить причину.почему stat() возвращает -1, даже если файл существует [RHEL 7.2]
1
A
ответ
0
Скорее всего, причина в том, что /tmp
недоступен.
Вам необходимо посмотреть на значение errno, которое возвращается stat
. Если это EACCES
, причина этого в том, что у пользователя нет разрешений на доступ /tmp
. Если это EPERM
, причиной может быть политика SELinux, предотвращающая доступ httpd к /tmp
. Если вы используете SELinux, убедитесь, что вы знаете справочную страницу httpd_selinux
.
Вы можете включить httpd
доступ к /tmp
с:
setsebool httpd_tmp_t 1
и внести изменения упорных с
setsebool -P httpd_tmp_t 1
После того, как вы называете стат(), выяснить, какое значение ERRNO имеет и посмотреть, подходит ли он один из случаев на странице man на stat. –