Создание и запись в файл на сервере., CHIM, 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 В чём может быть проблема?
|
- Создание и запись в файл на сервере., Аноним, 01:36 , 06-Июн-17 (1)
ответ в вопросе:под каким пользователем работпет php-fpm?
- Создание и запись в файл на сервере., PavelR, 08:24 , 06-Июн-17 (3)
- Создание и запись в файл на сервере., CHIM, 09:29 , 06-Июн-17 (5) –1
> 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"" это по сути каталог в котором находится файл который я выполняю(т.е. код в котором говорится о том что нужно произвести запись в файл), в этом же каталоге я пытаюсь создать/изменить файл.
- Создание и запись в файл на сервере., PavelR, 04:18 , 07-Июн-17 (8)
> Здесь меня интересует вот что "name="config"" это по сути каталог в котором > находится файл который я выполняю(т.е. код в котором говорится о том > что нужно произвести запись в файл), в этом же каталоге я > пытаюсь создать/изменить файл.С точки зрения ИБ неразумно разрешать создавать файлы в том же каталоге, откуда разрешено исполнение скриптов.
- Создание и запись в файл на сервере., ПавелС, 08:31 , 06-Июн-17 (4)
>[оверквотинг удален] > 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 > В чём может быть проблема?
- Создание и запись в файл на сервере., CHIM, 09:29 , 06-Июн-17 (6) –1
>[оверквотинг удален] >> 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 >> В чём может быть проблема?Проверил, каталог верный.
- Создание и запись в файл на сервере., CHIM, 11:40 , 06-Июн-17 (7)
|