move_uploaded_file выдает “failed to open stream: Permission denied ”

236
21 августа 2018, 13:10

Понимаю, что тема затертая до дыр, но все-таки. Есть форма, которая методом POST отправляется файл .jpeg. Нужно его сохранить в директорию /var/www/html/foto/. Есть скрипт, который обрабатывает и сохраняет файл:

 if (isset($_FILES['foto'])) {
    $uploaddir = '/var/www/html/foto/';
    $uploadfile = $uploaddir . basename($_FILES['foto']['name']);
    //Перемещаем файл из временной папки в указанную
    if (move_uploaded_file($_FILES['foto']['tmp_name'], $uploadfile))
      echo "Файл загружен";
    }

На директорию /foto/, как, в принципе, и на директориях - /html/,/www/,/var/ стоят права доступа 777, также права доступа 777 стоят и на скрипте /var/www/html/index.php.Ошибка:

Warning: move_uploaded_file(/var/www/html/foto/doroga.jpeg): failed to open stream: Permission denied in /var/www/html/logger.php on line 32

Warning: move_uploaded_file(): Unable to move '/tmp/phpNuynNq' to '/var/www/html/foto/doroga.jpeg' in /var/www/html/logger.php on line 32

В 32 строке: if (move_uploaded_file($_FILES['foto']['tmp_name'], $uploadfile)).
Понимаю, что проблема связана всеравно с правами доступа, так как скрипт рабочий, на другом сервере отлично все записывается, но не знаю как решить проблему! Хелп. Апач запущен от root:

 ps auxwwww | grep httpd
root     26302  0.0  0.2 419648 16656 ?        Ss   12:35   0:00 /usr/sbin/httpd -DFOREGROUND
apache   26303  0.0  0.1 421928 11464 ?        S    12:35   0:00 /usr/sbin/httpd -DFOREGROUND
apache   26304  0.0  0.1 421732  9528 ?        S    12:35   0:00 /usr/sbin/httpd -DFOREGROUND
apache   26305  0.0  0.1 421732  9528 ?        S    12:35   0:00 /usr/sbin/httpd -DFOREGROUND
apache   26306  0.0  0.1 421732  9528 ?        S    12:35   0:00 /usr/sbin/httpd -DFOREGROUND
apache   26307  0.0  0.1 421732  9528 ?        S    12:35   0:00 /usr/sbin/httpd -DFOREGROUND
apache   26308  0.0  0.1 421732  9528 ?        S    12:35   0:00 /usr/sbin/httpd -DFOREGROUND
root     26430  0.0  0.0 112728   972 pts/0    S+   12:44   0:00 grep --color=auto httpd

Стоит Apache/2.4.6 (CentOS) PHP/7.1.19.

Answer 1

При включенном в системе selinux каталог для аплоада файлов требует дополнительных разрешений. Для их добавления нужна следующая команда:

chcon -t httpd_sys_rw_content_t /var/www/html/foto/ -R 
READ ALSO
замена текста в шаблонизаторе smarty

замена текста в шаблонизаторе smarty

Есть массив, где key="слова заменяемые на" item="другие слова" У меня получалось вывести только последнию итерацию, поэтому я добавил условие,...

197
Поиск по всему массиву

Поиск по всему массиву

Есть массив вида:

214
Как проверить, существует ли каталог на Яндекс.Диске

Как проверить, существует ли каталог на Яндекс.Диске

Нормально подключился к приложению через yandex-php-library, могу создавать каталоги, файлы и тд

239