glpi-project / glpi

GLPI is a Free Asset and IT Management Software package, Data center management, ITIL Service Desk, licenses tracking and software auditing.
https://glpi-project.org
GNU General Public License v3.0
4.23k stars 1.29k forks source link

"Error when attaching some screenshots directly to the ticket." #16444

Closed serviceticst closed 7 months ago

serviceticst commented 9 months ago

Code of Conduct

Is there an existing issue for this?

Version

10.0.11

Bug description

When attaching a screenshot of a system's screen, for example, and pasting it into the ticket, then adding text beneath the image, upon saving the update, the entire entry goes blank, and nothing is saved, resulting in a loss of all information.

What we've noticed is that this happens occasionally; with some screenshots, it works fine, but with others, it produces this error.

image

While debugging, I captured this log.

[2024-01-26 16:39:42] glpiphplog.NOTICE: *** PHP Deprecated function (8192): preg_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in /usr/share/glpi/src/RichText/RichText.php at line 355 Backtrace : src/RichText/RichText.php:355 preg_replace() src/RichText/RichText.php:273 Glpi\RichText\RichText::fixImagesPath() src/RichText/RichText.php:63 Glpi\RichText\RichText::normalizeHtmlContent() src/RichText/RichText.php:301 Glpi\RichText\RichText::getSafeHtml() ...ion/View/Extension/DataHelpersExtension.php:230 Glpi\RichText\RichText::getEnhancedHtml() ...ates/45/45d99573ccfc69c8ceb3446fd882fc54.php:72 Glpi\Application\View\Extension\DataHelpersExtension->getEnhancedHtml() vendor/twig/twig/src/Template.php:171 TwigTemplate_d07c909c36db53191bd03277432ebb9f->block_timeline_card() ...ates/a4/a4a2db6ed5602e71abd50e76ae8800be.php:48 Twig\Template->displayBlock() vendor/twig/twig/src/Template.php:394 __TwigTemplate_4bff84a61e9b886d83310ebf90c196f0->doDisplay() vendor/twig/twig/src/Template.php:367 Twig\Template->displayWithErrorHandling() ...ates/45/45d99573ccfc69c8ceb3446fd882fc54.php:57 Twig\Template->display() vendor/twig/twig/src/Template.php:394 TwigTemplate_d07c909c36db53191bd03277432ebb9f->doDisplay() vendor/twig/twig/src/Template.php:367 Twig\Template->displayWithErrorHandling() vendor/twig/twig/src/Template.php:379 Twig\Template->display() vendor/twig/twig/src/TemplateWrapper.php:40 Twig\Template->render() .../twig/twig/src/Extension/CoreExtension.php:1349 Twig\TemplateWrapper->render() ...tes/ec/ec6cbb8a2efe766fe2b94b1b85106708.php:425 twig_include() vendor/twig/twig/src/Template.php:394 TwigTemplate_cf9582a178c9aed3fd76ab8a0bf60b2b->doDisplay() vendor/twig/twig/src/Template.php:367 Twig\Template->displayWithErrorHandling() vendor/twig/twig/src/Template.php:379 Twig\Template->display() vendor/twig/twig/src/TemplateWrapper.php:40 Twig\Template->render() .../twig/twig/src/Extension/CoreExtension.php:1349 Twig\TemplateWrapper->render() ...tes/24/24ef781d212992b008f998231b80b473.php:131 twig_include() vendor/twig/twig/src/Template.php:394 TwigTemplate_c861bb866645fae902b77b643975f9f3->doDisplay() vendor/twig/twig/src/Template.php:367 Twig\Template->displayWithErrorHandling() vendor/twig/twig/src/TemplateWrapper.php:47 Twig\Template->display() src/Application/View/TemplateRenderer.php:184 Twig\TemplateWrapper->display() src/Ticket.php:4426 Glpi\Application\View\TemplateRenderer->display() src/CommonGLPI.php:680 Ticket->showForm() ajax/common.tabs.php:120 CommonGLPI::displayStandardTab() public/index.php:82 require()

Relevant log output

[2024-01-26 16:39:42] glpiphplog.NOTICE:   *** PHP Deprecated function (8192): preg_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in /usr/share/glpi/src/RichText/RichText.php at line 355
  Backtrace :
  src/RichText/RichText.php:355                      preg_replace()
  src/RichText/RichText.php:273                      Glpi\RichText\RichText::fixImagesPath()
  src/RichText/RichText.php:63                       Glpi\RichText\RichText::normalizeHtmlContent()
  src/RichText/RichText.php:301                      Glpi\RichText\RichText::getSafeHtml()
  ...ion/View/Extension/DataHelpersExtension.php:230 Glpi\RichText\RichText::getEnhancedHtml()
  ...ates/45/45d99573ccfc69c8ceb3446fd882fc54.php:72 Glpi\Application\View\Extension\DataHelpersExtension->getEnhancedHtml()
  vendor/twig/twig/src/Template.php:171              __TwigTemplate_d07c909c36db53191bd03277432ebb9f->block_timeline_card()
  ...ates/a4/a4a2db6ed5602e71abd50e76ae8800be.php:48 Twig\Template->displayBlock()
  vendor/twig/twig/src/Template.php:394              __TwigTemplate_4bff84a61e9b886d83310ebf90c196f0->doDisplay()
  vendor/twig/twig/src/Template.php:367              Twig\Template->displayWithErrorHandling()
  ...ates/45/45d99573ccfc69c8ceb3446fd882fc54.php:57 Twig\Template->display()
  vendor/twig/twig/src/Template.php:394              __TwigTemplate_d07c909c36db53191bd03277432ebb9f->doDisplay()
  vendor/twig/twig/src/Template.php:367              Twig\Template->displayWithErrorHandling()
  vendor/twig/twig/src/Template.php:379              Twig\Template->display()
  vendor/twig/twig/src/TemplateWrapper.php:40        Twig\Template->render()
  .../twig/twig/src/Extension/CoreExtension.php:1349 Twig\TemplateWrapper->render()
  ...tes/ec/ec6cbb8a2efe766fe2b94b1b85106708.php:425 twig_include()
  vendor/twig/twig/src/Template.php:394              __TwigTemplate_cf9582a178c9aed3fd76ab8a0bf60b2b->doDisplay()
  vendor/twig/twig/src/Template.php:367              Twig\Template->displayWithErrorHandling()
  vendor/twig/twig/src/Template.php:379              Twig\Template->display()
  vendor/twig/twig/src/TemplateWrapper.php:40        Twig\Template->render()
  .../twig/twig/src/Extension/CoreExtension.php:1349 Twig\TemplateWrapper->render()
  ...tes/24/24ef781d212992b008f998231b80b473.php:131 twig_include()
  vendor/twig/twig/src/Template.php:394              __TwigTemplate_c861bb866645fae902b77b643975f9f3->doDisplay()
  vendor/twig/twig/src/Template.php:367              Twig\Template->displayWithErrorHandling()
  vendor/twig/twig/src/TemplateWrapper.php:47        Twig\Template->display()
  src/Application/View/TemplateRenderer.php:184      Twig\TemplateWrapper->display()
  src/Ticket.php:4426                                Glpi\Application\View\TemplateRenderer->display()
  src/CommonGLPI.php:680                             Ticket->showForm()
  ajax/common.tabs.php:120                           CommonGLPI::displayStandardTab()
  public/index.php:82                                require()

Page URL

http://192.168.101.5/

Steps To reproduce

No response

Your GLPI setup information

Instruções de instalação e configuração
GLPI 10.0.11 ( => /usr/share/glpi)
Installation mode: RPM
Current language:pt_BR

Server
 
Operating system: Linux srv-gcp-glpi-prd02.c.guaraves.internal 5.14.0-284.18.1.el9_2.cloud.x86_64 #​1 SMP PREEMPT_DYNAMIC Mon Jul
    3 20:10:49 UTC 2023 x86_64
PHP 8.1.27 fpm-fcgi (Core, PDO, Phar, Reflection, SPL, SimpleXML, Zend OPcache, apcu, bz2, calendar, cgi-fcgi, ctype, curl,
    date, dom, exif, fileinfo, filter, ftp, gd, gettext, hash, iconv, intl, json, krb5, ldap, libxml, mbstring, mysqli, mysqlnd,
    openssl, pcre, pdo_mysql, pdo_sqlite, posix, selinux, session, shmop, snmp, soap, sockets, sodium, sqlite3, standard, sysvmsg,
    sysvsem, sysvshm, tokenizer, xml, xmlreader, xmlrpc, xmlwriter, xsl, zip, zlib)
Setup: max_execution_time="30" memory_limit="512M" post_max_size="8M" safe_mode="" session.save_handler="files"
    upload_max_filesize="2M" disable_functions="" 
Software: Apache/2.4.57 (Rocky Linux) OpenSSL/3.0.7 ()
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36
Server Software: Percona Server (GPL), Release 25, Revision 60c9e2c5
    Server Version: 8.0.33-25
    Server SQL Mode: STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
    Parameters: glpiprod@localhost/glpiprod
    Host info: Localhost via UNIX socket

PHP version (8.1.27) is supported.
Sessions configuration is OK.
Allocated memory is sufficient.
mysqli extension is installed.
Following extensions are installed: dom, fileinfo, filter, libxml, json, simplexml, xmlreader, xmlwriter.
curl extension is installed.
gd extension is installed.
intl extension is installed.
zlib extension is installed.
The constant SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES is present.
Database engine version (8.0.33) is supported.
No files from previous GLPI version detected.
The log file has been created successfully.
Write access to /var/lib/glpi/files/_cache has been validated.
Write access to /var/lib/glpi/files/_cron has been validated.
Write access to /var/lib/glpi/files has been validated.
Write access to /var/lib/glpi/files/_dumps has been validated.
Write access to /var/lib/glpi/files/_graphs has been validated.
Write access to /var/lib/glpi/files/_lock has been validated.
Write access to /var/lib/glpi/files/_pictures has been validated.
Write access to /var/lib/glpi/files/_plugins has been validated.
Write access to /var/lib/glpi/files/_rss has been validated.
Write access to /var/lib/glpi/files/_sessions has been validated.
Write access to /var/lib/glpi/files/_tmp has been validated.
Write access to /var/lib/glpi/files/_uploads has been validated.
For security reasons, SELinux mode should be Enforcing.

Web server root directory configuration seems safe.
Sessions configuration is secured.
OS and PHP are relying on 64 bits integers.
exif extension is installed.
ldap extension is installed.
openssl extension is installed.
Following extensions are installed: bz2, Phar, zip.
Zend OPcache extension is installed.
Following extensions are installed: ctype, iconv, mbstring, sodium.
Write access to /usr/share/glpi/marketplace has been validated.
Timezones seems loaded in database.

GLPI constants
 
GLPI_ROOT: "/usr/share/glpi"
GLPI_CONFIG_DIR: "/etc/glpi"
GLPI_MARKETPLACE_ALLOW_OVERRIDE: false
GLPI_VAR_DIR: "/var/lib/glpi/files"
GLPI_LOG_DIR: "/var/log/glpi"
GLPI_SYSTEM_CRON: true
GLPI_INSTALL_MODE: "RPM"
GLPI_MARKETPLACE_DIR: "/usr/share/glpi/marketplace"
GLPI_USE_CSRF_CHECK: "1"
GLPI_CSRF_EXPIRES: "7200"
GLPI_CSRF_MAX_TOKENS: "100"
GLPI_USE_IDOR_CHECK: "1"
GLPI_IDOR_EXPIRES: "7200"
GLPI_ALLOW_IFRAME_IN_RICH_TEXT: false
GLPI_SERVERSIDE_URL_ALLOWLIST: ["/^(https?|feed):\\/\\/[^@:]+(\\/.*)?$/"]
GLPI_TELEMETRY_URI: "https://telemetry.glpi-project.org"
GLPI_NETWORK_MAIL: "glpi@teclib.com"
GLPI_NETWORK_SERVICES: "https://services.glpi-network.com"
GLPI_MARKETPLACE_MANUAL_DOWNLOADS: true
GLPI_USER_AGENT_EXTRA_COMMENTS: ""
GLPI_DISABLE_ONLY_FULL_GROUP_BY_SQL_MODE: "1"
GLPI_AJAX_DASHBOARD: "1"
GLPI_CALDAV_IMPORT_STATE: 0
GLPI_DEMO_MODE: "0"
GLPI_CENTRAL_WARNINGS: "1"
GLPI_TEXT_MAXSIZE: "4000"
GLPI_DOC_DIR: "/var/lib/glpi/files"
GLPI_CACHE_DIR: "/var/lib/glpi/files/_cache"
GLPI_CRON_DIR: "/var/lib/glpi/files/_cron"
GLPI_DUMP_DIR: "/var/lib/glpi/files/_dumps"
GLPI_GRAPH_DIR: "/var/lib/glpi/files/_graphs"
GLPI_LOCAL_I18N_DIR: "/var/lib/glpi/files/_locales"
GLPI_LOCK_DIR: "/var/lib/glpi/files/_lock"
GLPI_PICTURE_DIR: "/var/lib/glpi/files/_pictures"
GLPI_PLUGIN_DOC_DIR: "/var/lib/glpi/files/_plugins"
GLPI_RSS_DIR: "/var/lib/glpi/files/_rss"
GLPI_SESSION_DIR: "/var/lib/glpi/files/_sessions"
GLPI_TMP_DIR: "/var/lib/glpi/files/_tmp"
GLPI_UPLOAD_DIR: "/var/lib/glpi/files/_uploads"
GLPI_INVENTORY_DIR: "/var/lib/glpi/files/_inventories"
GLPI_NETWORK_REGISTRATION_API_URL: "https://services.glpi-network.com/api/registration/"
GLPI_MARKETPLACE_PLUGINS_API_URI: "https://services.glpi-network.com/api/marketplace/"
GLPI_I18N_DIR: "/usr/share/glpi/locales"
GLPI_VERSION: "10.0.11"
GLPI_SCHEMA_VERSION: "10.0.11"
GLPI_MARKETPLACE_PRERELEASES: false
GLPI_MIN_PHP: "7.4.0"
GLPI_MAX_PHP: "8.4.0"
GLPI_YEAR: "2023"

Libraries
 
htmlawed/htmlawed version 1.2.14 in (/usr/share/glpi/vendor/htmlawed/htmlawed)
phpmailer/phpmailer version 6.8.0 in (/usr/share/glpi/vendor/phpmailer/phpmailer/src)
simplepie/simplepie version 1.5.8 in (/usr/share/glpi/vendor/simplepie/simplepie/library)
tecnickcom/tcpdf version 6.4.4 in (/usr/share/glpi/plugins/pdf/vendor/tecnickcom/tcpdf)
michelf/php-markdown in (/usr/share/glpi/vendor/michelf/php-markdown/Michelf)
true/punycode in (/usr/share/glpi/vendor/true/punycode/src)
iamcal/lib_autolink in (/usr/share/glpi/vendor/iamcal/lib_autolink)
sabre/dav in (/usr/share/glpi/vendor/sabre/dav/lib/DAV)
sabre/http in (/usr/share/glpi/vendor/sabre/http/lib)
sabre/uri in (/usr/share/glpi/vendor/sabre/uri/lib)
sabre/vobject in (/usr/share/glpi/vendor/sabre/vobject/lib)
laminas/laminas-i18n in (/usr/share/glpi/vendor/laminas/laminas-i18n/src)
laminas/laminas-servicemanager in (/usr/share/glpi/vendor/laminas/laminas-servicemanager/src)
monolog/monolog in (/usr/share/glpi/vendor/monolog/monolog/src/Monolog)
sebastian/diff in (/usr/share/glpi/vendor/sebastian/diff/src)
donatj/phpuseragentparser in (/usr/share/glpi/vendor/donatj/phpuseragentparser/src/UserAgent)
elvanto/litemoji in (/usr/share/glpi/vendor/elvanto/litemoji/src)
symfony/console in (/usr/share/glpi/vendor/symfony/console)
scssphp/scssphp in (/usr/share/glpi/vendor/scssphp/scssphp/src)
laminas/laminas-mail in (/usr/share/glpi/vendor/laminas/laminas-mail/src/Protocol)
laminas/laminas-mime in (/usr/share/glpi/vendor/laminas/laminas-mime/src)
rlanvin/php-rrule in (/usr/share/glpi/vendor/rlanvin/php-rrule/src)
ramsey/uuid in (/usr/share/glpi/vendor/ramsey/uuid/src)
psr/log in (/usr/share/glpi/vendor/psr/log/Psr/Log)
psr/simple-cache in (/usr/share/glpi/vendor/psr/simple-cache/src)
psr/cache in (/usr/share/glpi/vendor/psr/cache/src)
league/csv in (/usr/share/glpi/vendor/league/csv/src)
mexitek/phpcolors in (/usr/share/glpi/vendor/mexitek/phpcolors/src/Mexitek/PHPColors)
guzzlehttp/guzzle in (/usr/share/glpi/vendor/guzzlehttp/guzzle/src)
guzzlehttp/psr7 in (/usr/share/glpi/vendor/guzzlehttp/psr7/src)
glpi-project/inventory_format in (/usr/share/glpi/vendor/glpi-project/inventory_format/lib/php)
wapmorgan/unified-archive in (/usr/share/glpi/vendor/wapmorgan/unified-archive/src)
paragonie/sodium_compat in (/usr/share/glpi/vendor/paragonie/sodium_compat/src)
symfony/cache in (/usr/share/glpi/vendor/symfony/cache)
html2text/html2text in (/usr/share/glpi/vendor/html2text/html2text/src)
symfony/css-selector in (/usr/share/glpi/vendor/symfony/css-selector)
symfony/dom-crawler in (/usr/share/glpi/vendor/symfony/dom-crawler)
twig/twig in (/usr/share/glpi/vendor/twig/twig/src)
twig/string-extra in (/usr/share/glpi/vendor/twig/string-extra)
symfony/polyfill-ctype not found
symfony/polyfill-iconv not found
symfony/polyfill-mbstring not found
symfony/polyfill-php80 not found
symfony/polyfill-php81 not found
symfony/polyfill-php82 in (/usr/share/glpi/vendor/symfony/polyfill-php82)
league/oauth2-client in (/usr/share/glpi/vendor/league/oauth2-client/src/Provider)
league/oauth2-google in (/usr/share/glpi/vendor/league/oauth2-google/src/Provider)
thenetworg/oauth2-azure in (/usr/share/glpi/vendor/thenetworg/oauth2-azure/src/Provider)

SQL replicas
 
Not active

Notifications
 
Way of sending emails: SMTP+TLS (glpi@guaraves.com.br@smtp.gmail.com)

Plugins list
 
    actualtime           Name: ActualTime                     Version: 2.1.0      State: To update                               
        Install Method: Manual
    news                 Name: Alertas                        Version: 1.12.0     State: Enabled                                 
        Install Method: Manual
    fields               Name: Campos adicionais              Version: 1.20.6     State: Enabled                                 
        Install Method: Manual
    behaviors            Name: Comportamentos                 Version: 2.7.2      State: Enabled                                 
        Install Method: Manual
    costs                Name: Costs                          Version: 3.0.1      State: Installed / not activated               
        Install Method: Manual
    customlogin          Name: Custom Login                   Version: 1.0.4      State: Installed / not activated               
        Install Method: Manual
    formcreator          Name: Form Creator                   Version: 2.13.6     State: Enabled                                 
        Install Method: Manual
    fusioninventory      Name: FusionInventory                Version: 10.0.6+1.1 State: Installed / not activated               
        Install Method: Manual
    tag                  Name: Gerenciamento de Etiquetas     Version: 2.11.2     State: Enabled                                 
        Install Method: Manual
    genericobject        Name: Gerenciamento de objetos       Version: 2.14.3     State: Enabled                                 
        Install Method: Manual
    datainjection        Name: Importação de dados            Version: 2.13.1     State: To update                               
        Install Method: Manual
    pdf                  Name: Imprimir em PDF                Version: 3.0.0      State: Enabled                                 
        Install Method: Manual
    timelineticket       Name: Linha do tempo dos chamados    Version: 10.0+1.1   State: Enabled                                 
        Install Method: Manual
    mailanalyzer         Name: Mail Analyzer                  Version: 3.0.0      State: Not installed                           
        Install Method: Manual
    moreticket           Name: Mais Chamados                  Version: 1.7.3      State: Installed / not activated               
        Install Method: Manual
    satisfaction         Name: Mais satisfação                Version: 1.6.1      State: Installed / not activated               
        Install Method: Manual
    metabase             Name: Metabase                       Version: 1.3.3      State: Enabled                                 
        Install Method: Manual
    oauthimap            Name: Oauth IMAP                     Version: 1.4.3      State: To update                               
        Install Method: Manual
    dashboard            Name: Painel                         Version: 1.0.3      State: Enabled                                 
        Install Method: Manual
    tasklists            Name: Tasks list                     Version: 2.0.3      State: Enabled                                 
        Install Method: Manual

Anything else?

No response

serviceticst commented 8 months ago

"When trying to paste a direct image into the follow-up, I receive the log below."

image

[2024-02-05 10:02:36] glpiphplog.NOTICE: *** PHP Deprecated function (8192): preg_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in /usr/share/glpi/src/RichText/RichText.php at line 354 Backtrace : src/RichText/RichText.php:354 preg_replace() src/RichText/RichText.php:273 Glpi\RichText\RichText::fixImagesPath() src/RichText/RichText.php:63 Glpi\RichText\RichText::normalizeHtmlContent() src/RichText/RichText.php:301 Glpi\RichText\RichText::getSafeHtml() ...ion/View/Extension/DataHelpersExtension.php:230 Glpi\RichText\RichText::getEnhancedHtml() ...ates/d5/d540b4c3b3c68d964b4b49231baf2dc4.php:72 Glpi\Application\View\Extension\DataHelpersExtension->getEnhancedHtml() vendor/twig/twig/src/Template.php:171 TwigTemplate_0d76bbe6357706cb41617327808f1ada->block_timeline_card() ...ates/b6/b6b646eaec2ce642a74e258bd85cc4af.php:48 Twig\Template->displayBlock() vendor/twig/twig/src/Template.php:394 __TwigTemplate_8b3f5e324ff8e6d736ba68e90cd8eefb->doDisplay() vendor/twig/twig/src/Template.php:367 Twig\Template->displayWithErrorHandling() ...ates/d5/d540b4c3b3c68d964b4b49231baf2dc4.php:57 Twig\Template->display() vendor/twig/twig/src/Template.php:394 TwigTemplate_0d76bbe6357706cb41617327808f1ada->doDisplay() vendor/twig/twig/src/Template.php:367 Twig\Template->displayWithErrorHandling() vendor/twig/twig/src/Template.php:379 Twig\Template->display() vendor/twig/twig/src/TemplateWrapper.php:38 Twig\Template->render() .../twig/twig/src/Extension/CoreExtension.php:1347 Twig\TemplateWrapper->render() ...tes/65/65e66df5229dde3aa3acd3926a9bb301.php:425 twig_include() vendor/twig/twig/src/Template.php:394 TwigTemplate_e80683bcdf71030972f1ee4018467a25->doDisplay() vendor/twig/twig/src/Template.php:367 Twig\Template->displayWithErrorHandling() vendor/twig/twig/src/Template.php:379 Twig\Template->display() vendor/twig/twig/src/TemplateWrapper.php:38 Twig\Template->render() .../twig/twig/src/Extension/CoreExtension.php:1347 Twig\TemplateWrapper->render() ...tes/c8/c84988e98a37d1e08405f9f8988a87c3.php:131 twig_include() vendor/twig/twig/src/Template.php:394 TwigTemplate_054713728bbbd97852e4c1be33265494->doDisplay() vendor/twig/twig/src/Template.php:367 Twig\Template->displayWithErrorHandling() vendor/twig/twig/src/TemplateWrapper.php:45 Twig\Template->display() src/Application/View/TemplateRenderer.php:184 Twig\TemplateWrapper->display() src/Ticket.php:4426 Glpi\Application\View\TemplateRenderer->display() src/CommonGLPI.php:680 Ticket->showForm() ajax/common.tabs.php:120 CommonGLPI::displayStandardTab() public/index.php:82 require()

FreeMacs commented 8 months ago

We have the same problem.

efriastech commented 8 months ago

Hello, I would like to add to this issue as well.

It seems that the comment does get written to the Database and so does the image (or at least part of it in Base64). However, the content of the followup is empty.

This seems to happen when copy pasting an image rather than uploading it as an attachment. It also seems to happen more often when the image is of high resolution (size).

I believe it might be related to a memory issue or a SQL query that does not properly return the value for that followup.

This might be related with slowdowns during the Ticket load: https://github.com/glpi-project/glpi/issues/16529

Thank you.

serviceticst commented 8 months ago

Any feedback on this?

cedric-anne commented 7 months ago

Hi,

The initial problem was that the image was not converted into a document when the ticket/followup was created. Increasing the pcre.backtrack_limit PHP configuration value could solve the issue that appears at the ticket/followup creation.

The issue that appears at ticket/followup creation will be fixed in GLPI 11 by #14592.

For the tickets/followups that are already created, I have no solution to propose yet. I am not even sure it is possible to build a migration that would fix the data.

FreeMacs commented 7 months ago

I can reproduce the problem in connection with my ticket #16529.

When I drag and drop an image into this field, there are several behaviors in GLPI. image

Images up to approx. 500KB are displayed without any problems.

For images between 600KB and 4MB I only get an empty field. image

and with images that are over 4-5MB in size, the ticket can no longer be opened and it just loads endlessly. image

If I drag files and photos into the drag and drop field, it works without any problems. image

The image is always displayed when I drag it in and it also says Upload Succesful, but after saving it, the specified problems occur. image

Is this an error in the text field? Is it not even intended for this? And if not, shouldn't this function be disabled immediately and only be possible via the drag and drop field?

serviceticst commented 7 months ago

Oi,

O problema inicial era que a imagem não era convertida em documento no momento da criação do ticket/acompanhamento. Aumentar o pcre.backtrack_limitvalor da configuração do PHP pode resolver o problema que aparece na criação do ticket/acompanhamento.

O problema que aparece na criação do ticket/acompanhamento será corrigido no GLPI 11 por #14592 .

Para os tickets/acompanhamentos já criados, ainda não tenho solução para propor. Nem tenho certeza se é possível construir uma migração que conserte os dados.

@cedric-anne , pcre.backtrack_limit=200000, Would it be a good value?

FreeMacs commented 7 months ago

I have now found out with an API query that if you load the photos directly into the comment field, they are probably stored base64 encoded directly in the database and this probably leads to the error.

image image

After this follow-up has been deleted via the API, I can open the ticket again.

cedric-anne commented 7 months ago

@cedric-anne , pcre.backtrack_limit=200000, Would it be a good value?

Maybe, it depends on the size of images you are trying to upload.

trasher commented 7 months ago

There is not much more we can do on the subject. Properly catching that kind of PHP error seems not possible.

Issue will be fixed in GLPI 11; workaround until upgrade is to update system configuration to a satisfying value for your needs.