Это частый вопрос, но я дважды безуспешно проверял предлагаемые решения.
ошибки PHP:
Warning: move_uploaded_file(images/img01.jpg): failed to open stream: Permission denied in /usr/share/nginx/html/media/test.php on line 28
Warning: move_uploaded_file(): Unable to move '/tmp/phpRvUCVx' to 'images/img01.jpg' in /usr/share/nginx/html/media/test.php on line 28
На сервере установлен nginx с php 7.3 (php-fpm)
Разрешения на папку загрузки:
drwxrwxrwx. 2 nginx nginx 6 Apr 5 03:11 images
Информация из ps aux | grep php
centos 24211 0.0 0.0 112708 980 pts/0 S+ 16:01 0:00 grep --color=auto php
root 24674 0.0 0.6 285532 11452 ? Ss Apr04 0:04 php-fpm: master process (/etc/opt/remi/php73/php-fpm.conf)
nginx 24675 0.0 0.4 287740 8724 ? S Apr04 0:00 php-fpm: pool www
nginx 24676 0.0 0.4 287740 8720 ? S Apr04 0:00 php-fpm: pool www
nginx 24677 0.0 0.4 287740 8684 ? S Apr04 0:00 php-fpm: pool www
nginx 24678 0.0 0.5 287916 9232 ? S Apr04 0:00 php-fpm: pool www
nginx 24679 0.0 0.5 287916 9308 ? S Apr04 0:00 php-fpm: pool www
nginx 25107 0.0 0.4 287740 8716 ? S Apr04 0:00 php-fpm: pool www
Информация из ps aux | grep nginx
root 15041 0.0 0.1 125116 2324 ? Ss Apr04 0:00 nginx: master process /usr/sbin/nginx
nginx 15042 0.0 0.2 125956 5328 ? S Apr04 0:00 nginx: worker process
nginx 15043 0.0 0.2 125956 5328 ? S Apr04 0:00 nginx: worker process
nginx 24675 0.0 0.4 287740 8724 ? S Apr04 0:00 php-fpm: pool www
nginx 24676 0.0 0.4 287740 8720 ? S Apr04 0:00 php-fpm: pool www
nginx 24677 0.0 0.4 287740 8684 ? S Apr04 0:00 php-fpm: pool www
nginx 24678 0.0 0.5 287916 9272 ? S Apr04 0:00 php-fpm: pool www
nginx 24679 0.0 0.5 287916 9308 ? S Apr04 0:00 php-fpm: pool www
nginx 25107 0.0 0.4 287740 8716 ? S Apr04 0:00 php-fpm: pool www
centos 26097 0.0 0.0 112712 976 pts/0 S+ 16:39 0:00 grep --color=auto nginx
Конфигурация для PHP-FPM
user = nginx
group = nginx
listen = /var/run/php73-fpm/php73-fpm.sock
listen.owner = nginx
listen.group = nginx
Что мне не хватает? Заранее спасибо.
У вас здесь несколько проблем, возможно, некоторые из которых вы представили сами, пытаясь решить исходную проблему.
Во-первых, ваш PHP-процесс, похоже, запущен как пользователь nginx. Это не была конфигурация по умолчанию и не рекомендуется. Вы должны позволить ему работать с собственным идентификатором пользователя, как это было изначально установлено.
Во-вторых, разрешение вашего каталога images
позволяет всем пользователям писать в него. Очевидно, что это плохая идея, и ее никогда не следует делать, даже для «тестирования». Правильно установите права собственности и разрешения. Если вам когда-нибудь приходит в голову, что chmod 777
может вам помочь, помните, что вы идете по неправильному пути.
В-третьих, вы, кажется, разместили файлы своего веб-сайта в / usr / share / nginx / html
. Вы не должны использовать этот каталог для своих файлов; он предназначен только для файлов по умолчанию, поставляемых с nginx. Вместо этого используйте каталог в / srv
, например / srv / www
. Также избегайте / var / www
, который является еще одним каталогом, зарезервированным для файлов по умолчанию веб-сервера (обычно тех, которые поставляются Apache httpd).
Наконец, для непосредственной проблемы SELinux не разрешает nginx или php- fpm для записи в случайные каталоги. Вам нужно сообщить SELinux, что каталог и его содержимое должны быть доступны для записи, установив для него контекст по умолчанию httpd_sys_rw_content_t
, а затем установив контекст всех существующих файлов. Например:
semanage fcontext -a -t httpd_sys_rw_content_t "/srv/www/wherever/images(/.*)?"
restorecon -rv /srv/www/wherever/images