Файлы, не сохраненные на экземпляре Ubuntu с использованием PHP

#php #amazon-ec2

#php #amazon-ec2

Вопрос:

Я только что перенес проект в AWS на экземпляре Ubuntu.

Это серверный проект PHP.

Я могу работать с базой данных MySQL, и я могу загружать файлы с помощью Filezilla. Моя проблема в том, что я пытаюсь сохранить файлы в usuarios папке на экземпляре, используя этот PHP-файл:

 <?php 



 if ((isset($_POST["enviado"])) amp;amp; ($_POST["enviado"]=="form1")){
$length = 6;

$randomString = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, $length);

$prefijo =  $randomString;
    

    $nombre_archivo = $_FILES['userfile']['name'];
    
    $file_upload = "true";
    if ($_FILES['userfile']['size']>2000000){
$file_upload="false";
}
    
    if ($file_upload == 'true'){
    
   $str=preg_replace('/s /', '', $nombre_archivo);
   $str =preg_replace('~amp;([a-z]{1,2})(acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '$1', htmlentities($str, ENT_QUOTES, 'UTF-8'));
    move_uploaded_file($_FILES['userfile']['tmp_name'],"usuarios/".$prefijo.$str);
    ?>
      <script>

    window.opener.document.getElementById("imagen").value="<?php echo $prefijo.$str;?>";
     

    
    self.close();

    </script>
<?php
    
    }
    else 
    {
        $texto = $lang['LIMIT_FILE'];
        echo $texto."<BR><BR><BR>";?>
<input type='submit' name='submit' value='Reintentar' onClick="window.location.reload()" />
    
    
<?php }
    ?>

  

    

    <?php 

}

else {?>

<form id="form1" name="form1" method="post" action="subirfoto.php" data-ajax="false" enctype="multipart/form-data">

  <p>

    <input name="userfile" type="file" />

  </p>

  <p>

    <input type="submit" name="button" id="button" value="Upload Picture" />

    <input type="hidden" name="enviado" value="form1" />

  </p>


</form>

<?php }?>
  

но файлы не сохраняются в папке.

Я предполагаю, что это может быть проблема с правами доступа к папкам.

Проект отлично работает на другом веб-сервере, но не на этом экземпляре Ubuntu на AWS.

Что я должен проверить и изменить, чтобы сохранить файлы в этой папке сервера?

Комментарии:

1. XHTML — странный выбор для 2020 года … и еще более странный, поскольку ваш XHTML недействителен.

2. @Quentin, это старый PHP-скрипт, вы не возражаете, что это проблема?

3. @Quentin, я только что удалил все html-части скрипта, и проблема есть, что-то изменилось, но спасибо за ваш комментарий.

Ответ №1:

Подтверждено, это был вопрос разрешений.

Я выполнил следующие команды, и проблема решена:

 sudo chown -R www-data:ubuntu /var/www/html
sudo chmod -R 755 /var/www/html
sudo find /var/www/html -type f -exec chmod 644 {} ;
sudo find /var/www/html -type d -exec chmod 755 {} ;