The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

форумы  правила/FAQ  поиск  регистрация  вход/выход  слежка  RSS
"Создание и запись в файл на сервере."
Вариант для распечатки  
Пред. тема | След. тема 
Форум WEB технологии (nginx)
Изначальное сообщение [ Отслеживать ]

"Создание и запись в файл на сервере."  –1 +/
Сообщение от CHIM email(ok) on 05-Июн-17, 23:09 
Доброго времени суток. Переношу свой проект на живой сервер и столкнулся с проблемой. У меня есть функция которая записывает данные в файл, а тут она перестала работать и в логи пишет следующее:
2017/06/01 15:08:57 [error] 8736#8736: *2 FastCGI sent in stderr: "PHP message: PHP Warning:  fopen(tx.txt): failed to open stream: Permission denied in /var/www/apteka/config/wr.php on line 3" while reading response header from upstream, client: 192.168.хх.хх, server: localhost, request: "GET /apteka/config/wr.php HTTP/1.1", upstream: "fastcgi://unix:/run/php-fpm/php-fpm.sock:", host: "192.168.хх.хх"

Сам код файла я создал просто для пробы, чтоб отсечь всё ненужное:
<?PHP
$file = 'tx.txt';
fopen($file, 'x+');
echo $file;

1. Права на каталог 777,
2. Владелец каталога nginx,
3. Установлена связка CentOS 7.3.1611+nginx 1.12 +php7.1.5 +php-fpm 3.1.0
4. В файле php.ini функция allow_url_fopen = On
В чём может быть проблема?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

1. "Создание и запись в файл на сервере."  +/
Сообщение от Аноним (??) on 06-Июн-17, 01:36 
ответ в вопросе:

под каким пользователем работпет php-fpm?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Создание и запись в файл на сервере."  –1 +/
Сообщение от CHIM email(ok) on 06-Июн-17, 08:08 
> ответ в вопросе:
> под каким пользователем работпет php-fpm?

Под nginx.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Создание и запись в файл на сервере."  +/
Сообщение от PavelR (??) on 06-Июн-17, 08:24 
selinux ?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Создание и запись в файл на сервере."  +/
Сообщение от ПавелС email(ok) on 06-Июн-17, 08:31 
>[оверквотинг удален]
> Warning:  fopen(tx.txt): failed to open stream: Permission denied in /var/www/apteka/config/wr.php
> on line 3" while reading response header from upstream, client: 192.168.хх.хх,
> server: localhost, request: "GET /apteka/config/wr.php HTTP/1.1", upstream: "fastcgi://unix:/run/php-fpm/php-fpm.sock:",
> host: "192.168.хх.хх"
> Сам код файла я создал просто для пробы, чтоб отсечь всё ненужное:
> <?PHP
> $file = 'tx.txt';
> fopen($file, 'x+');
> echo $file;
> 1. Права на каталог 777,

Вы уверены что текущий каталог этот, путь то в fopen не полный - относительный?
Надо в этом php посмотреть что возвращает string getcwd ( void ).
> 2. Владелец каталога nginx,
> 3. Установлена связка CentOS 7.3.1611+nginx 1.12 +php7.1.5 +php-fpm 3.1.0
> 4. В файле php.ini функция allow_url_fopen = On
> В чём может быть проблема?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Создание и запись в файл на сервере."  –1 +/
Сообщение от CHIM email(ok) on 06-Июн-17, 09:29 
> selinux ?

getsebool -a | grep -i http

httpd_anon_write --> off
httpd_builtin_scripting --> on
httpd_can_check_spam --> off
httpd_can_connect_ftp --> off
httpd_can_connect_ldap --> off
httpd_can_connect_mythtv --> off
httpd_can_connect_zabbix --> off
httpd_can_network_connect --> on
httpd_can_network_connect_cobbler --> off
httpd_can_network_connect_db --> off
httpd_can_network_memcache --> off
httpd_can_network_relay --> off
httpd_can_sendmail --> off
httpd_dbus_avahi --> off
httpd_dbus_sssd --> off
httpd_dontaudit_search_dirs --> off
httpd_enable_cgi --> on
httpd_enable_ftp_server --> off
httpd_enable_homedirs --> off
httpd_execmem --> off
httpd_graceful_shutdown --> on
httpd_manage_ipa --> off
httpd_mod_auth_ntlm_winbind --> off
httpd_mod_auth_pam --> off
httpd_read_user_content --> on
httpd_run_ipa --> off
httpd_run_preupgrade --> off
httpd_run_stickshift --> off
httpd_serve_cobbler_files --> off
httpd_setrlimit --> off
httpd_ssi_exec --> off
httpd_sys_script_anon_write --> off
httpd_tmp_exec --> off
httpd_tty_comm --> off
httpd_unified --> off
httpd_use_cifs --> off
httpd_use_fusefs --> off
httpd_use_gpg --> off
httpd_use_nfs --> off
httpd_use_openstack --> off
httpd_use_sasl --> off
httpd_verify_dns --> off
named_tcp_bind_http_port --> off
prosody_bind_http_port --> off

Неужели нужно первую строчку разрешать?

Но Вы похоже правы, дело в SELinux. Логи его говорят вот что:
type=AVC msg=audit(1496731832.959:389): avc:  denied  { write } for  pid=23482 comm="php-fpm" name="config" dev="dm-0" ino=918003 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:httpd_sys_content_t:s0 tclass=dir
type=SYSCALL msg=audit(1496731832.959:389): arch=c000003e syscall=2 success=no exit=-13 a0=7ffe44a1a9b0 a1=c2 a2=1b6 a3=1d items=0 ppid=23478 pid=23482 auid=4294967295 uid=995 gid=993 euid=995 suid=995 fsuid=995 egid=993 sgid=993 fsgid=993 tty=(none) ses=4294967295 comm="php-fpm" exe="/usr/sbin/php-fpm" subj=system_u:system_r:httpd_t:s0 key=(null)

Здесь меня интересует вот что "name="config"" это по сути каталог в котором находится файл который я выполняю(т.е. код в котором говорится о том что нужно произвести запись в файл), в этом же каталоге я пытаюсь создать/изменить файл.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

6. "Создание и запись в файл на сервере."  –1 +/
Сообщение от CHIM email(ok) on 06-Июн-17, 09:29 
>[оверквотинг удален]
>> fopen($file, 'x+');
>> echo $file;
>> 1. Права на каталог 777,
> Вы уверены что текущий каталог этот, путь то в fopen не полный
> - относительный?
> Надо в этом php посмотреть что возвращает string getcwd ( void ).
>> 2. Владелец каталога nginx,
>> 3. Установлена связка CentOS 7.3.1611+nginx 1.12 +php7.1.5 +php-fpm 3.1.0
>> 4. В файле php.ini функция allow_url_fopen = On
>> В чём может быть проблема?

Проверил, каталог верный.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

7. "Создание и запись в файл на сервере."  +/
Сообщение от CHIM email(ok) on 06-Июн-17, 11:40 
В общем дело было в хитрых настройках SELinux.
Вот здесь я прочитал про нужные мне параметры: http://www.serverlab.ca/tutorials/linux/web-servers-linux/co.../

А именно "httpd_sys_rw_content_t" после использования этой настройки всё начало записываться нормально.
Чё то они перемудрили с этим SELinux...

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

8. "Создание и запись в файл на сервере."  +/
Сообщение от PavelR (??) on 07-Июн-17, 04:18 
> Здесь меня интересует вот что "name="config"" это по сути каталог в котором
> находится файл который я выполняю(т.е. код в котором говорится о том
> что нужно произвести запись в файл), в этом же каталоге я
> пытаюсь создать/изменить файл.

С точки зрения ИБ неразумно разрешать создавать файлы в том же каталоге, откуда разрешено исполнение скриптов.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема


  Закладки на сайте
  Проследить за страницей
Created 1996-2017 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
Hosting by Ihor