Невозможно загрузить изображение из $ _FILES - PullRequest
0 голосов
/ 05 июня 2019

Я делаю простую загрузку изображений с помощью PHP, что я делал 100 раз раньше.На этот раз это не работает.У меня есть каталоги / tmp и uploads, настроенные на chmod 777, я выбрал каталоги для apache, я проверил, что массив $ _FILES заполнен:

<input type="file" name="uploadimage" id="uploadimage" />

[uploadimage] => Array(
    [name] => dilbert.jpg
    [type] => image/jpeg
    [tmp_name] => /tmp/phpkuJyyP
    [error] => 0
    [size] => 731602
)

Вот мой код:

$response = array();
$response['path'] = '';
$response['success'] = false;
$response['error'] = '';

$targetDir = "../../../images/uploads/";
$filepath = $targetDir . $_FILES['uploadimage']['name'];

// here just for testing since it won't return below
$response['path'] = $filepath;

if(is_array($_FILES)) {
    if(is_uploaded_file($_FILES['uploadimage']['tmp_name'])) {
        if(move_uploaded_file($_FILES['uploadimage']['tmp_name'], $filepath)) {
            $response['success'] = true;
            $response['path'] = $targetDir . $_FILES['uploadimage']['name'];
        } else {
            $response['error'] = 'File could not be moved';
        }
    } else {
        $response['error'] = 'File not found';
    }
} else {
    $response['error'] = 'Files array not found';
}

Самая внутренняя ошибка: «Файл не может быть перемещен». Путь, который я получаю в ответ на мой вызов AJAX, правильный, он должен быть domain.com/images/uploads/filename.JPG, и это ...

Я вручную загрузил изображение в каталог загрузки, domain.com/images/uploads/1.jpg, а затем снова загрузил это изображение, он загрузил, и он разрешается в пользовательском интерфейсепотому что изображение уже было там, поэтому я знаю, что путь, пройденный назад, является точным.

Что еще можно попробовать?Изображения не заканчиваются в / tmp

Ошибки Apache

PHP Warning:  move_uploaded_file(../../../images/uploads/dilbert.jpg):
failed to open stream: No such file or directory in 
/var/www/webapp/application/controllers/DocumentController.php 
on line 75, referer: http://192.168.1.3/document/

PHP Warning:  move_uploaded_file(): Unable to move '/tmp/phpm4Ivrx' to 
'../../../images/uploads/dilbert.jpg' in 
/var/www/webapp/application/controllers/DocumentController.php
on line 75, referer: http://192.168.1.3/document/

File does not exist: 
/var/www/webapp/public/images/uploads/dilbert.jpg, referer: 
http://192.168.1.3/document/
...