За последние 24 часа нас посетили 7432 программиста и 682 робота. Сейчас ищут 244 программиста ...

не работает загрузка файлов на хостинг

Тема в разделе "PHP для новичков", создана пользователем ara05ru, 11 июл 2019.

  1. ara05ru

    ara05ru Новичок

    С нами с:
    18 апр 2019
    Сообщения:
    35
    Симпатии:
    0
    Добрый день друзья. Локально работает страница для загрузки, показа списка загруженных файлов и обратной выгрузки. Закинул скрипты на хостинг, не работает. Помогите понять в чем дело.
    вот скрипт
    PHP:
    1. <html>
    2. <head>
    3. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    4.     <meta charset="UTF-8">
    5.     <link rel="stylesheet" href="../css/bootstrap4.1.1.css">
    6.     <link rel="icon" type="image/png" href="../img/favicon-16x16.png" sizes="16x16">
    7.     <link rel="icon" type="image/png" href="../img/favicon-32x32.png" sizes="32x32">
    8.     <link rel="icon" type="image/png" href="../img/favicon-96x96.png" sizes="96x96">
    9.     <link rel="stylesheet" href="../css/bootstrap.css">
    10.     <link rel="stylesheet" href="../css/index.css">
    11.     <style>
    12.     .container {
    13.     max-width: 500px;
    14.     border: 3px solid #1a7faf;
    15.     padding: 20px;
    16. }
    17. </style>
    18.     <title>Tables</title>
    19. </head>
    20. <body>
    21.     <?php
    22.         include_once "menu.html";
    23.     ?><br>
    24.     <div class="container">
    25.     <?php
    26. if(isset($_FILES) && $_FILES['inputfile']['error'] == 0){ // Проверяем, загрузил ли пользователь файл
    27. $destiation_dir = dirname(__FILE__) .'/'.$_FILES['inputfile']['name']; // Директория для размещения файла
    28. move_uploaded_file($_FILES['inputfile']['tmp_name'], $destiation_dir ); // Перемещаем файл в желаемую директорию
    29.  
    30. }
    31. ?>
    32.        
    33. <h4>Загрузка файлов</h4>
    34.        
    35.  
    36. <form method="post" action="basic.php" enctype="multipart/form-data">
    37. <label for="inputfile"></label><br>
    38. <input type="file" id="inputfile" name="inputfile"></br><br>
    39. <input type="submit" value="Загрузить">
    40. </form>
    41.  
    42.  
    43. <h4>Список файлов</h4>
    44.  
    45.  
    46. <div class="col-sm">
    47. <?php
    48. $nf = '20'; // количество файлов
    49. $sort = 'down'; // способ сортировки: up - по возрастанию, down - по убыванию
    50. $dir = './';
    51. $scandir = scandir($dir);
    52. foreach($scandir as $v) if(preg_match('/\.(xls*)/', $v)) {
    53.     $a[] = $dir.$v; $aname[] = $v;
    54.     //echo "<a href='download.php?file=".$v."'>".$v."</a><br>";
    55.     }
    56. for($i=0;$i<count($a);$i++){
    57. $b[filemtime($a[$i])] = $a[$i];
    58. $bname[filemtime($a[$i])] = $aname[$i];
    59. }
    60. if($sort == 'up') {
    61. ksort($b);
    62. ksort($bname);
    63. }
    64. if($sort == 'down') {
    65. krsort($b);
    66. krsort($bname);
    67. }
    68. foreach($b as $k=>$v) { $names[] = $v; $filemtime[] = date('d:m:Y H:i:s', $k); }
    69. foreach($bname as $v) { $bnames[] = $v; }
    70. if($nf > count($b)) $number = count($b); else $number = $nf;
    71. for($i=0;$i<$number;$i++){
    72. //echo ''.$bnames[$i].''.$filemtime[$i];
    73. echo "<a href='download.php?file=".$bnames[$i]."'>".$bnames[$i]."</a><br>";
    74. }
    75. ?>
    76.  
    77.  
    78. </div>
    79.     </div>
    80. <script src="../js/jquery-3.3.1.js"></script>  
    81. <script src="../js/bootstrap.js"></script>  
    82. </body>
    83. </html>
    вот ошибки
    Примечание: неопределенный индекс: inputfile в /var/www/html/files / basic.php в строке 26

    Примечание: неопределенный индекс: inputfile в /var/www/html/files/basic.php в строке 27

    Примечание: неопределенный индекс: inputfile в /var/www/html/files/basic.php в строке 28

    Примечание: неопределенная переменная: a in/var/www/html / files / basic.php on line 60

    предупреждение: count (): параметр должен быть массивом или объектом, реализующим счет в /var/www/html/files/basic.php в строке 60

    предупреждение: krsort () ожидает, что параметр 1 будет массивом, значение null задано в /var/www/html/files/basic.php в строке 70

    предупреждение: krsort () ожидает, что параметр 1 будет массивом, значение null задано в /var/www/html/files/basic.php on line 71

    предупреждение: недопустимый аргумент, предоставленный для foreach () в /var/www/html/files/basic.php on line 74

    предупреждение: недопустимый аргумент, предоставленный для foreach () в /var/www/html/files/basic.php в строке 75

    Предупреждение: count (): параметр должен быть массивом или объектом, реализующим счет в /var/www/html/files/basic.php on line 77

    Warning: count (): параметр должен быть массивом или объектом, реализующим счет в /var/www/html/files/basic.php on line 77
     
  2. ara05ru

    ara05ru Новичок

    С нами с:
    18 апр 2019
    Сообщения:
    35
    Симпатии:
    0
    у меня виртуальный сервер VDS-KVM на ubuntu-16 с sftp доступом к папкам. Закинул тот же самый скрипт на хостинг jino, там все работает. Может ли это быть из каких то ограничений со стороны провайдера ?
     
  3. yanuzay

    yanuzay Новичок

    С нами с:
    28 мар 2018
    Сообщения:
    346
    Симпатии:
    37
    php постепенно в новых версиях начинает становится похожим на нормальный язык программирования.
    В php 7.2 функция count() наконец-то требует чтобы то что ему передают для обработки было массивом или объектом, а не чем нибудь другим непонятным.
    А на jino хостинге видимо допотопная версия php
     
  4. ara05ru

    ara05ru Новичок

    С нами с:
    18 апр 2019
    Сообщения:
    35
    Симпатии:
    0
    да нет. на jino тоже php 7.2. Я как понимаю там дело в правах скрипта на выгрузку данных. связался с тех поддержкой.
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    5.450
    Симпатии:
    888
    Адрес:
    Лень
    @ara05ru, у тебя валидации переменных нет.
     
  6. ara05ru

    ara05ru Новичок

    С нами с:
    18 апр 2019
    Сообщения:
    35
    Симпатии:
    0
    скрипт найден в просторах инета. переменные не я придумывал
     
  7. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    5.450
    Симпатии:
    888
    Адрес:
    Лень
    у тебя валидации переменных нет.
     
  8. yanuzay

    yanuzay Новичок

    С нами с:
    28 мар 2018
    Сообщения:
    346
    Симпатии:
    37
    Сочувствую. Ты же не фильтруешь файлы которые к тебе загружают, к тебе могут загрузить php и делать что угодно с твоим сайтом
     
  9. ara05ru

    ara05ru Новичок

    С нами с:
    18 апр 2019
    Сообщения:
    35
    Симпатии:
    0
    У меня сайт на виртуальной машине с VPN доступом . Так что туда без OpenVPN подключения и логин/пароля пользователя не получится зайти . Я вот думаю мой скрипт из за этого может не работать ?
     
  10. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    5.450
    Симпатии:
    888
    Адрес:
    Лень
    я что в игноре ? не пойму
     
  11. ara05ru

    ara05ru Новичок

    С нами с:
    18 апр 2019
    Сообщения:
    35
    Симпатии:
    0
    нет конечно. просто я понять не могу что ты имеешь ввиду. php только изучаю и плохо понимаю.
     
  12. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    5.450
    Симпатии:
    888
    Адрес:
    Лень
    Пишу про валидацию переменных в скрипте, а он... черная магия не дает покоя
     
  13. ara05ru

    ara05ru Новичок

    С нами с:
    18 апр 2019
    Сообщения:
    35
    Симпатии:
    0
    что такое валидация ))). я же говорю умею только копипастить и немного менять код php.
    --- Добавлено ---
    код вообще то рабочий. это я как понял у меня проблема с разрешениями в папках
     
  14. ara05ru

    ara05ru Новичок

    С нами с:
    18 апр 2019
    Сообщения:
    35
    Симпатии:
    0
    как и говорил код рабочий. если кому надо можете использовать. проблема была в том что не было прав у скрипта на запись и необходимые права для папки.