tmp файл не загружен PHP - PullRequest
       15

tmp файл не загружен PHP

1 голос
/ 15 апреля 2019

С недавних пор я работаю с PHP и столкнулся с проблемой с загрузкой изображения.

Мой код хорошо работает на моей локальной машине;однако при загрузке на мою виртуальную машину файл не загружается в папку tmp.

Я попытался увидеть массив, который заполняется из $ _ FILES с помощью "print_r ($ _ FILES);"и вот что я получаю в массиве:

array ( [image] => array ( [name] => avatar-1.jpg [type] => image/jpeg [tmp_name] => /tmp/phpfkhvrw [error] => 0 [size] => 1029 ) )

Я просмотрел файл php.ini , и все вроде бы в порядке,Я также проверил несколько других статей с аналогичными проблемами, но ни одно из предложений не сработало.

Я думаю, что это как-то связано с разрешением, как в файле envvars , конфигурацияследующее:

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

Однако все файлы на сервере имеют права root как пользователя и группы.

Я действительно надеюсь, что кто-то может поделиться некоторыми знаниями об этом, поскольку я действительно не знаю, что делать дальше.

Ответы [ 3 ]

2 голосов
/ 15 апреля 2019

То, что вы показали нам здесь, доказывает, что загрузка файла прошла успешно. Вы должны быть более конкретными в отношении того, что, по вашему мнению, провалилось.

Как намекает Zeusarm, созданный файл (/ tmp / phpfkhvrw) не сохраняется после завершения HTTP-запроса - он удаляется PHP. Если вы хотите сохранить эту ошибку после запроса, вам нужно вызвать move_uploaded_file ()

все файлы на сервере с правами суперпользователя и группой

Возможно, вы захотите поработать над моделью разрешений.

1 голос
/ 16 апреля 2019

Оказывается, файл загружался в каталог tmp, но не перемещался, поскольку владельцем и группой папки html и tmp был root .

Поменял владельца и группу на обе папки и теперь все работает.

sudo chown www-data:www-data FolderName -R

В качестве альтернативы, разрешения 777 могут использоваться для всех папок, но это не рекомендуется.

0 голосов
/ 16 апреля 2019

Возможно, добавьте chmod для вашей функции. Пример.

   // move_uploaded_file has is_uploaded_file() built-in
                if(move_uploaded_file($tmp_file, $file_path)) {
                echo "File moved to: {$file_path}<br />";

                // remove execute file permissions from the file
                    if(chmod($file_path, 0644)) {
                        echo "Execute permissions removed from file.<br />";
                        $file_permissions = file_permissions($file_path);
                        echo "File permissions are now '{$file_permissions}'.<br />";
                    } else {
                        echo "Error: Execute permissions could not be removed.<br />";
                    }
            }
...