2015-06-24 4 views
1

Следующий код работает отлично на моем локальном хосте, но он показывает следующие ошибки на моем живом сервереmove_uploaded_file() работает на локальном хосте, но на сервере

Предупреждение: move_uploaded_file (.../добавления/76948893.jpeg) : не удалось не удалось открыть поток: нет такого файла или каталога

Предупреждение: move_uploaded_file(): не удается переместить '/ TMP/phppxvRs8' к '.../загрузки/76948893.jpeg'

Что это простое, оно принимает изображения на массиве ["pictures"], который происходит из html-формы и сохраняет каждое изображение в папке «.../uploads /» с использованием случайного числового имени в качестве имени файла и сохранения исходного расширения.

Кто-нибудь знает, как заставить его работать на моем сервере?

//Image Uploader 
    $images=[]; 
    $directory = '.../uploads/'; 
    foreach ($_FILES["pictures"]["error"] as $key => $error) { 
     $new_file_name = rand (10000000,99999999); 
    if ($error == UPLOAD_ERR_OK) { 
     $tmp_name = $_FILES["pictures"]["tmp_name"][$key]; 
     $name = $_FILES["pictures"]["name"][$key]; 
     /* echo '<br>'; 
     echo $directory.$new_file_name.".".substr($_FILES['pictures']['type'][$key],strpos($_FILES['pictures']['type'][$key], "/")+1);*/ 

     if(move_uploaded_file($_FILES['pictures']['tmp_name'][$key], 
          $directory 
          .$new_file_name 
          .".".substr($_FILES['pictures']['type'][$key],strpos($_FILES['pictures']['type'][$key], "/")+1)))    { 
      array_push($images,$new_file_name.".".substr($_FILES['pictures']['type'][$key],strpos($_FILES['pictures']['type'][$key], "/")+1)); 
      $images_validator=true; 
     }else{ 
     //Error 
     } 

    } 
} 
+3

права на папку –

+0

Что сказал @ Фред-и-и попробовал абсолютный путь вместо относительного пути. (Измените '$ directory' на' $ directory = getcwd(). 'Uploads /'; ') – Darren

+0

плюс, вы захотите изменить' .../'на' ../ '2 точки не 3. –

ответ

1

Там может быть много причин для этого, проверьте следующее

  1. Вам необходимо разрешение на запись для каталога uploads. Я предполагаю, что ваша локальная машина запускает окна & ваша среда для размещения - это linux

  2. Как @Darren предлагает использовать абсолютный путь. изменить $directory к $directory = getcwd() . 'uploads/';

0

Если это работает на локальном компьютере, но не на сервере есть 2 простых ответов я могу думать с правом со спины. 1. Папка не существует на сервере, 2. поскольку кто-то комментирует, у вас нет разрешения на запись/чтение в эту папку на сервере .... Я бы проверял конфигурацию сервера, чтобы убедиться, что ваш пул приложений или пользователи прочитали/пишите разрешения в папку

Смежные вопросы