Команда Subprocess в Django работает на localhost, но не работает на vps-сервере openlitespeed

У меня есть следующий код функции в файле views.py моего проекта django: def word_to_pdf_logic(view_func): def wrapper_function(request, *args, **kwargs): if request.method == "POST" and request.FILES.get('word_file'): word_file = request.FILES['word_file']

        # Generate unique temporary file name
        temp_filename = f"{uuid.uuid4()}.docx"
        temp_file_path = os.path.join(settings.MEDIA_ROOT, 'word_to_pdf', temp_filename)

        # Save uploaded Word file to temporary location
        fs = FileSystemStorage(location=os.path.join(settings.MEDIA_ROOT, 'word_to_pdf'))
        temp_file = fs.save(temp_filename, word_file)
        
        word_filename = word_file.name
        print(f'word_filename : {word_filename}')
        print(f'temp_filename : {temp_filename}')

        out_path = os.path.join(settings.MEDIA_ROOT, 'word_to_pdf')
        # subprocess.call(['lowriter', '--headless', '--convert-to', 'pdf', '--outdir', out_path, temp_file_path])
        subprocess.call(['libreoffice', '--headless', '--convert-to', 'pdf', '--outdir', out_path, temp_file_path])

        output_pdf_filename = os.path.splitext(word_filename)[0] + '.pdf'
        output_pdf_path = os.path.join(settings.MEDIA_ROOT, 'word_to_pdf', temp_filename.replace(temp_filename.split('.')[1],'pdf'))

        print(f'output_pdf_filename : {output_pdf_filename}')
        print(f'output_pdf_path : {output_pdf_path}')
        
        
        if output_pdf_path:
            # Serve the PDF file for download
            with open(output_pdf_path, 'rb') as pdf_file:
                print(f'Pdf_file {pdf_file.name}')

                response = HttpResponse(pdf_file.read(), content_type='application/pdf')
                response['Content-Disposition'] = f'attachment; filename={os.path.basename(output_pdf_path)}'
                return response
        else:
            return HttpResponse("Error converting file to PDF")
    else:
        return view_func(request, *args, **kwargs)  
return wrapper_function    

Код работает нормально на localhost, но подпроцесс не работает на хостинговом VPS openlitespeed server на hostinger (os - Ubuntu 22.04). Команды libreoffice и lowriter работают на vps, если использовать их в терминале для преобразования файлов word (doc/docx) в pdf, но если я использую их через приложение django, то оно выдает ошибку. Тот же код работает на моем ноутбуке (localhost). Я проверил все необходимые библиотеки,

Я потратил более 15 дней, но решение не найдено, Как решить эту проблему? Пожалуйста, помогите мне

Я попробовал все альтернативные варианты команды libreoffice, а также попробовал модули подпроцессов, такие как call, run, popen. Все работает в терминале, но в приложении Django не конвертирует файл Word в PDF & я получаю ошибку File not found, и то же самое работает на localhost через Django. Я также проверяю разрешения папок, путь и т.д.

Вернуться на верх