Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 26 Ответов
  • 818 Просмотров
*

Biss

  • Давно я тут
  • 994
  • 101 / 0
Кто работал с PhpSpreadsheet?
« : 28.08.2022, 13:37:55 »
Помогите пожалуйста решить вопрос. Уже сколько не пробовал, не получаетя с загрузкой файлов. На локалке все норм а на хостинге ошибка Fatal error: Uncaught PhpOffice\PhpSpreadsheet\Reader\Exception: File "1661539984.xlsx" does not exist.
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
Re: Кто работал с PhpSpreadsheet?
« Ответ #1 : 28.08.2022, 13:55:44 »
значит неправильный путь к файлу указываете. пропишите полный путь с директорией
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Biss

  • Давно я тут
  • 994
  • 101 / 0
Re: Кто работал с PhpSpreadsheet?
« Ответ #2 : 28.08.2022, 15:26:13 »
Да как только не писал и полн. и короткий.   и никак, у меня такие подозрения что файл не может загрузится в временную папку и изза того и проблема. Делал по примеру https://www.fundaofwebit.com/php/import-excel-file-into-mysql-database-in-php
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
Re: Кто работал с PhpSpreadsheet?
« Ответ #3 : 28.08.2022, 16:41:05 »
Закиньте файл по ftp и тестируйте
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

marksetter

  • Завсегдатай
  • 1045
  • 40 / 0
Re: Кто работал с PhpSpreadsheet?
« Ответ #4 : 28.08.2022, 16:54:32 »
права на папку смотрите
если она формируется
если нет то руками
библиотека рабочая, использую много где
индивидуальная помощь: @SetAlexx
*

Biss

  • Давно я тут
  • 994
  • 101 / 0
Re: Кто работал с PhpSpreadsheet?
« Ответ #5 : 28.08.2022, 18:06:14 »
Библиотека то рабочая я знаю на локальном все ок а на сервере не получается. По ftp файл загружал и скрипт его нормально читает. Проверял в какую папку должно грузить, написало /tmp а как узнать полний путь?
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Кто работал с PhpSpreadsheet?
« Ответ #6 : 28.08.2022, 18:11:39 »
File "1661539984.xlsx" does not exist.
Как Вы получаете этот файл 1661539984.xlsx
Если Вы загружаете файл на сервер в браузере то вам нужен путь к временному загруженному файлу
Код: php
$file_path = $_FILES['FILE']['tmp_name'];
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

Biss

  • Давно я тут
  • 994
  • 101 / 0
Re: Кто работал с PhpSpreadsheet?
« Ответ #7 : 28.08.2022, 18:22:13 »
Вот код из моих файлов
Код
     <form method="POST" id="import_excel_form" enctype="multipart/form-data"> 
      <span id="message"></span>
        <input type="file" name='import_excel' class="form-control"/>
        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">&#10005;</button>
        <input type="submit" name="import" id="import" class="btn btn-primary" value="Import" />
      </form>
<script>
$(document).ready(function(){
  $('#import_excel_form').on('submit', function(event){
    event.preventDefault();
    $.ajax({
      url:"cat_import.php",
      method:"POST",
      data:new FormData(this),
      contentType:false,
      cache:false,
      processData:false,
      beforeSend:function(){
        $('#import').attr('disabled', 'disabled');
        $('#import').val('Importing...');
      },
      success:function(data)
      {
        $('#message').html(data);
        $('#import_excel_form')[0].reset();
        $('#import').attr('disabled', false);
        $('#import').val('Import');
      }
    })
  });
});
</script>
<?php
require '../db.php';
require '../lib/autoload.php';

if($_FILES['import_excel']['name'] != ''){

$allowed_extension = array('xls','csv','xlsx');
$file_array     = explode('.', $_FILES['import_excel']['name']);
$file_extension = end($file_array);

if(in_array($file_extension, $allowed_extension)){
$file_name = time(). '.' . $file_extension;
move_uploaded_file($_FILES['import_excel']['tmp_name'], $file_name);

$file_type   = \PhpOffice\PhpSpreadsheet\IOFactory::identify($file_name);
$reader      = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($file_type);
$spreadsheet = $reader->load($file_name);
unlink($file_name);
$data        = $spreadsheet->getActiveSheet()->toArray();

$count       = "0";
foreach($data as $row){
if($count > 0){
$sub_cat_name   = $row['0'];
$sub_cat_code   = $row['1'];
$sub_cat_parent = $row['2'];
$sub_cat_desc   = $row['3'];
$query          = "INSERT INTO e_sub_cat (sub_cat_name, sub_cat_code, sub_cat_parent, sub_cat_desc) VALUES ('$sub_cat_name', '$sub_cat_code', '$sub_cat_parent', '$sub_cat_desc')";
$result         = mysqli_query($link, $query);
}
else
{
$count = "1";
}
}


$message = '<div class="alert alert-success">Data Imported Successfully</div>';

}
else
{
$message = '<div class="alert alert-danger">Only .xls .csv or .xlsx file allowed</div>';
}
}
else
{
$message = '<div class="alert alert-danger">Please Select File</div>';
}

echo $message;

?>
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Кто работал с PhpSpreadsheet?
« Ответ #8 : 28.08.2022, 18:26:04 »
Попробуйте вот так
Код: php
$spreadsheet = $reader->load($_FILES['import_excel']['tmp_name']);
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

Biss

  • Давно я тут
  • 994
  • 101 / 0
Re: Кто работал с PhpSpreadsheet?
« Ответ #9 : 28.08.2022, 18:29:50 »
То же самое
Код
Fatal error: Uncaught PhpOffice\PhpSpreadsheet\Reader\Exception: File "1661700536.xlsx" does not exist. in /home/biss466/domains/chas-tv.in.ua/public_html/demo/1/WorkTime/lib/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/File.php:149 Stack trace: #0 /home/biss466/domains/chas-tv.in.ua/public_html/demo/1/WorkTime/lib/phpoffice/phpspreadsheet/src/PhpSpreadsheet/IOFactory.php(129): PhpOffice\PhpSpreadsheet\Shared\File::assertFile('1661700536.xlsx') #1 /home/biss466/domains/chas-tv.in.ua/public_html/demo/1/WorkTime/lib/phpoffice/phpspreadsheet/src/PhpSpreadsheet/IOFactory.php(110): PhpOffice\PhpSpreadsheet\IOFactory::createReaderForFile('1661700536.xlsx', NULL) #2 /home/biss466/domains/chas-tv.in.ua/public_html/demo/1/WorkTime/stock/cat_import.php(17): PhpOffice\PhpSpreadsheet\IOFactory::identify('1661700536.xlsx') #3 {main} thrown in /home/biss466/domains/chas-tv.in.ua/public_html/demo/1/WorkTime/lib/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/File.php on line 149
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Кто работал с PhpSpreadsheet?
« Ответ #10 : 28.08.2022, 18:30:48 »
Покажите что будет выводиться!
Код: php
echo '<pre>' . print_R($_FILES['import_excel'], 1); exit;
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

Biss

  • Давно я тут
  • 994
  • 101 / 0
Re: Кто работал с PhpSpreadsheet?
« Ответ #11 : 28.08.2022, 18:35:17 »
Array
(
    [name] => 1.xlsx
    [type] =>
    [tmp_name] =>
    [error] => 6
    [size] => 0
)
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Кто работал с PhpSpreadsheet?
« Ответ #12 : 28.08.2022, 18:37:35 »
Значит что то с загрузкой файла!
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

Biss

  • Давно я тут
  • 994
  • 101 / 0
Re: Кто работал с PhpSpreadsheet?
« Ответ #13 : 29.08.2022, 20:42:55 »
Так и ничего не получилось, хостер написал
Код
Права на файл дают возможность записи, мы проверили это, добавив код:
putenv('TMPDIR=/home/biss466/domains/chas-tv.in.ua/public_html/demo/tmp');
echo substr(sprintf('%o', fileperms(sys_get_temp_dir())), -4);

Уже после загрузки временная папка меняется на корневую "/tmp" вместо указанной.Нужно проверить где оно меняет её и отключить этот фрагмент кода, либо изменить.
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Кто работал с PhpSpreadsheet?
« Ответ #14 : 29.08.2022, 21:10:39 »
Так и ничего не получилось, хостер написал
Код
Права на файл дают возможность записи, мы проверили это, добавив код:
putenv('TMPDIR=/home/biss466/domains/chas-tv.in.ua/public_html/demo/tmp');
echo substr(sprintf('%o', fileperms(sys_get_temp_dir())), -4);

Уже после загрузки временная папка меняется на корневую "/tmp" вместо указанной.Нужно проверить где оно меняет её и отключить этот фрагмент кода, либо изменить.
Не пойму к чему это?
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
Re: Кто работал с PhpSpreadsheet?
« Ответ #15 : 29.08.2022, 21:33:51 »
Array
(
    [name] => 1.xlsx
    [type] =>
    [tmp_name] =>
    [error] => 6
    [size] => 0
)

https://www.php.net/manual/ru/features.file-upload.errors.php
 UPLOAD_ERR_NO_TMP_DIR
    Значение: 6; Отсутствует временная папка.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Biss

  • Давно я тут
  • 994
  • 101 / 0
Re: Кто работал с PhpSpreadsheet?
« Ответ #16 : 29.08.2022, 23:15:03 »
https://www.php.net/manual/ru/features.file-upload.errors.php
 UPLOAD_ERR_NO_TMP_DIR
    Значение: 6; Отсутствует временная папка.
Так и я им про то же писал. А какой у вас параметр upload_tmp_dir
« Последнее редактирование: 29.08.2022, 23:22:18 от Biss »
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
Re: Кто работал с PhpSpreadsheet?
« Ответ #17 : 30.08.2022, 08:37:48 »
А какой у вас параметр upload_tmp_dir
в php-fpm.conf прописано:
Код
php_admin_value[upload_tmp_dir] = /tmp
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Biss

  • Давно я тут
  • 994
  • 101 / 0
Re: Кто работал с PhpSpreadsheet?
« Ответ #18 : 30.08.2022, 11:59:12 »
У меня нет доступа к таким файлам, хостинг. Но у меня догадки что там не должно писать no value
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
Re: Кто работал с PhpSpreadsheet?
« Ответ #19 : 30.08.2022, 12:09:58 »
Но у меня догадки что там не должно писать no value
на одном из сайтов именно такое значение и все работает. скорее всего в этом случае используется дефолтное значение "/tmp". А в вашем случае похоже, что нет прав к этому тмп, о чем и писалось выше.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Biss

  • Давно я тут
  • 994
  • 101 / 0
Re: Кто работал с PhpSpreadsheet?
« Ответ #20 : 31.08.2022, 14:30:25 »
на одном из сайтов именно такое значение и все работает. скорее всего в этом случае используется дефолтное значение "/tmp". А в вашем случае похоже, что нет прав к этому тмп, о чем и писалось выше.
А вы можете протестировать мой код у себя на хостинге или сервере там где есть эта библиотека. Я просто в тупике сейчас и не знаю куда дальше копать.
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
Re: Кто работал с PhpSpreadsheet?
« Ответ #21 : 31.08.2022, 15:23:09 »
А вы можете протестировать мой код у себя на хостинге или сервере там где есть эта библиотека. Я просто в тупике сейчас и не знаю куда дальше копать.
хтмл-форму + js ? могу - с ними проблем нет. вот такой результат в $_FILES:
Код
Array
(
    [import_excel] => Array
        (
            [name] => Без имени 1.odt
            [type] => application/vnd.oasis.opendocument.text
            [tmp_name] => /tmp/phpm0rezX
            [error] => 0
            [size] => 15680
        )

)
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Biss

  • Давно я тут
  • 994
  • 101 / 0
Re: Кто работал с PhpSpreadsheet?
« Ответ #22 : 31.08.2022, 15:31:46 »
Вложение
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
Re: Кто работал с PhpSpreadsheet?
« Ответ #23 : 31.08.2022, 15:35:48 »
Проблема у вас с отправкой (точнее - приемкой) файла, а не с кодом по его чтению. Проверяйте права записи на папку /tmp
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Biss

  • Давно я тут
  • 994
  • 101 / 0
Re: Кто работал с PhpSpreadsheet?
« Ответ #24 : 31.08.2022, 15:49:42 »
Подскажите мне последовательность действий. Где эта папка находится
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
Re: Кто работал с PhpSpreadsheet?
« Ответ #25 : 31.08.2022, 16:23:55 »
Подскажите мне последовательность действий. Где эта папка находится
в корне файловой системы.
Создайте пхп-скрипт:
Код
<?php
file_put_contents('/tmp/test.txt', 'test');
echo file_get_contents('/tmp/test.txt');
?>

OK
и откройте его через браузер. если слово "test" отобразится, до доступ есть

или зайдите по ssh и проверьте там (при наличии такой возможности)
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Biss

  • Давно я тут
  • 994
  • 101 / 0
Re: Кто работал с PhpSpreadsheet?
« Ответ #26 : 05.09.2022, 10:18:34 »
Не выяснил в чем беда. Просто сейчас все перекинул на другой акаунт тот же хостинг (свои причины) и оно всё сразу заработало  *suicide*
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться