LINUX.ORG.RU
ФорумAdmin

Права доступа к файлам из php

 , ,


0

1

nginx + php-fpm крутятся на CentOS 7 проблема в правах доступа к файлам из скриптов php. Пользователь и группа у всех одинаковые

# ps aux | grep nginx
nginx    18270  0.0  0.1 230388  4748 ?        S    15:49   0:00 php-fpm: pool www
nginx    18311  0.0  0.0  48312  1908 ?        S    15:50   0:00 nginx: worker process
права на файл 666
# ls -la test.txt
-rw-rw-rw-. 1 nginx nginx 12 ноя 10 15:32 test.txt
[10-Nov-2014 14:21:16 GMT] PHP Warning:  file_put_contents(test.txt): failed to open stream: 
Permission denied in /var/www/html/test.php on line 3
чяднт???

file_put_contents(test.txt)

Намекает на то, что у тебя где-то идёт запись в test.txt. Так вот, то куда оно пишется — там прав достаточно?

beastie ★★★★★ ()
Ответ на: комментарий от powerguy

ls -lZ test.txt

-rw-rw-rw-. nginx nginx unconfined_u:object_r:httpd_sys_content_t:s0 test.txt

ausearch -m avc

time->Mon Nov 10 16:46:44 2014
type=SYSCALL msg=audit(1415620004.411:83364): arch=c000003e syscall=2 success=no exit=-13 a0=7fc237896f58 a1=241
a2=1b6 a3=0 items=0 ppid=18387 pid=18392 auid=4294967295 uid=998 gid=997 euid=998 suid=998 fsuid=998 egid=997
sgid=997 fsgid=997 tty=(none) ses=4294967295 comm="php-fpm" exe="/usr/sbin/php-fpm" 
subj=system_u:system_r:httpd_t:s0 key=(null)
type=AVC msg=audit(1415620004.411:83364): avc:  denied  { write } for  pid=18392 comm="php-fpm" name="test.txt"
dev="dm-1" ino=769025 scontext=system_u:system_r:httpd_t:s0 
tcontext=unconfined_u:object_r:httpd_sys_content_t:s0 tclass=file

pavel_l ()
Ответ на: комментарий от pavel_l

А полный путь? php-fpm в chroot'е? Может он у тебя в / пытается писать. В общем, больше инфы, пожалуйста. Какое там содержание test.php с строке 3?

beastie ★★★★★ ()
Ответ на: комментарий от beastie

php-fpm в chroot'е

нет

Может он у тебя в / пытается писать

это вряд ли читать то он его читает

Какое там содержание test.php с строке 3?

<?php
echo file_get_contents('./test.txt').'<br>';
file_put_contents('./test.txt', 'Hello, world\n');
echo file_get_contents('./test.txt').'<br>';
?>
pavel_l ()
Ответ на: комментарий от pavel_l

Сделай restorecon на этот файл. У него должен быть httpd_sys_rw вроде бы.

powerguy ★★ ()
Ответ на: комментарий от powerguy

Сделай restorecon на этот файл.

никак не помогло (

сейчас попробую отключить SELinux посмотрю по крайней мере в нем ли причина

pavel_l ()
Ответ на: комментарий от powerguy

ай спасибо, мил человек ) проблема именно в SELinux, щас буду копать как заставить работать

pavel_l ()
Ответ на: комментарий от pavel_l

вообще по-хорошему всё, что надо писать - в /var/lib/something/, что показывать - в /usr/share/something/

на /var/lib/something/ - httpd_content_rw

на /usr/share/something/ - httpd_content_ro

powerguy ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.