2016-01-04 5 views
1

Я следил за небольшим учебным пособием, чтобы я мог загрузить файл на сервер, этот файл должен быть перемещен в img/profile /, а затем он читается оттуда.Файл загружен, но не перемещен

Мое дерево, как это (IMG и профиль являются папки):

updatepp.php значок-profile.png IMG и профиля внутри IMG

Я пошел в мои папки и проверил разрешений, и он говорит, что я могу писать в этот файл.

Внутри updatepp.php является FCODE для profilepic загружаемого

if(isset($_FILES['profile']) === true){ 
    if(empty($_FILES['profile']['name']) === true){ 
     echo 'please choose a file'; 
    }else{ 
     //checks 
     $allowed = array('jpg', 'jpeg', 'png', 'gif'); 
     $file_name = $_FILES['profile']['name']; 
     $file_extn = strtolower(end(explode('.', $file_name))); 
     $file_temp = $_FILES['profile']['tmp_name']; 

     if(in_array($file_extn, $allowed) === true){ 
      $file_path = 'img/profile/' . substr(md5(time()),0,10) . '.' . $file_extn; 
      if(move_uploaded_file($file_temp, $file_path)){ 
       echo "succes " . $file_path; 
       $result = $db->prepare("UPDATE users SET profile=:profile WHERE user_id=:user"); 
       $result->bindParam(':profile', $file_path); 
       $result->bindParam(':user', $user); 
       $result->execute(); 
      }else{ 
       echo "failure"; 
      } 
     }else{ 
      echo 'incorrect file type. Allowed: '; 
      echo implode(', ', $allowed); 
     } 
    } 
} 

Файл загружен в базу данных и SucceS сообщения $file_path отображается на экране. Однако, когда я смотрю в папку, я вижу, что файл НЕ был перемещен.

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

Я бы предположил, что папка не существует, но это ясно.

+2

$ _SERVER [ 'DOCUMENT_ROOT'] .img/profile/'. substr (md5 (время()), 0,10). '' , $ File_extn; ... попробуйте это. – devpro

+0

Вы проверили где-то загруженное изображение – Butterfly

+0

Возможный дубликат [move \ _uploaded \ _file (...): не удалось открыть поток: нет такого файла или каталога] (http://stackoverflow.com/questions/34541344/move-uploaded-file-failed-to-open-stream-no-such-file-or-directory) – Butterfly

ответ

1

От Docs:$_SERVER['DOCUMENT_ROOT'] является корневой каталог документов в соответствии с которым ваш проект выполняется. как определено в файле конфигурации сервера .

Если конечный пункт загрузить файл находится в пределах DOCUMENT_ROOT, чем вы можете объявить свой путь как:

$file_path = $_SERVER['DOCUMENT_ROOT'].'img/profile/' . substr(md5(time()),0,10) . '.' . $file_extn; 

Вы также можете попробовать так:

$file_path = '../img/profile/' . substr(md5(time()),0,10) . '.' . $file_extn; 
+0

Спасибо, это помогло! – Waro1234

+0

просто, не забыл отмечать как принятый ответ, потому что он поможет другим, которые также сталкиваются с такой проблемой. просто нажмите на зеленый зеленый галочку. ниже номинального счетчика. и счастливый новогодний помощник. @ Waro1234 – devpro

+0

Зачем OP «попробуйте это»? *** Хороший ответ *** всегда будет объяснять, что было сделано, и почему это было сделано именно так, не только для OP, но и для будущих посетителей SO. –