I tried to update Centreon from version 24.10.12 to 25.10.5 yesterday. The update process worked as expected, but after the update, there were some unexpected issues.
I could not delete hosts and services, could not create new templates, and could not edit existing templates. In some cases, Sometimes when saving it would just throw an empty page. I couldn't find any errors in the log files, and the UI did not throw any exceptions either.
Cloning services, hosts, and templates works as expected.
I was just wondering if this is a known bug that will be fixed in the next minor update or if this is an edge case.
For testing, I disabled SELinux and removed any security-related, non-Centreon HTTPD configuration.
Thanks in advance!
Best answer by Cdefourth
For anyone facing the same issues with gssapi and Kerberos here is the solution we found.
10-centreon.conf
<VirtualHost *:80> ServerName <hostname> RewriteEngine On # REGEL 1: Rewrite API with 307 RewriteCond %{REQUEST_URI} ^/centreon/api RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=307,L]
# REGEL 2: Rewrite everything else with 301 RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L] </VirtualHost>
<LocationMatch ^/centreon/api/.*> AuthType None Require all granted SetEnv REMOTE_USER admin RequestHeader set REMOTE_USER admin </LocationMatch>
<LocationMatch ^/centreon/(?!api/).*> SSLRequireSSL AuthType GSSAPI AuthName "GSSAPI Single Sign On Login" GssapiCredStore keytab:/etc/httpd/conf.d/XXXX.keytab GssapiSSLonly On GssapiLocalName On Require valid-user
ErrorDocument 401 '<html><meta http-equiv="refresh" content="0; URL=/centreon"><body>Kerberos authentication did not pass.</body></html>' ErrorDocument 500 '<html><meta http-equiv="refresh" content="0; URL=/centreon"><body>Kerberos authentication did not pass.</body></html>' </LocationMatch>
Is this a bug that you need to set the REMOTE_USER for it to work? @ponchoh @Alexandre Belhomme….
Hi, thanks for your response, sadly this didn't solve my issue. I reverted back a snapshot to 24.10.12 and patched to the latest minor Version 24.10.17 and then to 25.10.5 and I have the same Problems. I set the logging mode to Debug and enabled all logging Options. Here are errors I found in the logfiles, I don't know if these errors are connected though:
centreon-web.log
[2026-01-23T13:41:20+01:00] ERROR : Error while deleting host by API : Unknown error | {"custom":{"host_id":175},"exception":null,"default":{"request_infos":{"uri":"/centreon/main.get.php?p=60101","http_method":"POST","server":"XXXX.XXX.com"}}}
php-fpm/centreon-error.log [23-Jan-2026 13:08:29 Europe/Vienna] PHP Fatal error: Declaration of Centreon\Application\Normalizer\IconUrlNormalizer::normalize($icon, $format = null, array $context = []) must be compatible with Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize(mixed $data, ?string $format = null, array $context = []): ArrayObject|array|string|int|float|bool|null in /usr/share/centreon/src/Centreon/Application/Normalizer/IconUrlNormalizer.php on line 40 [23-Jan-2026 13:08:29 Europe/Vienna] PHP Fatal error: Declaration of Centreon\Application\Normalizer\IconUrlNormalizer::normalize($icon, $format = null, array $context = []) must be compatible with Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize(mixed $data, ?string $format = null, array $context = []): ArrayObject|array|string|int|float|bool|null in /usr/share/centreon/src/Centreon/Application/Normalizer/IconUrlNormalizer.php on line 40
The browser does not show anything when trying to delete a host.
Hi, it seems it is calling an api and failed to parse json.
Can you see if you can catch the payload in your browser network tab ? Maybe there is some weird parameter making the internal api fail or something. But that looks like a bug indeed.
Hi, it seems it is calling an api and failed to parse json.
Can you see if you can catch the payload in your browser network tab ? Maybe there is some weird parameter making the internal api fail or something. But that looks like a bug indeed.
Hi, thank you for your answer. Here is the Payload of the POST that gets called after I try to delete a Host and after I try to edit the Host.
String Parameters p 60101
Form Data: searchH hostgroup poller template status o1 d l 30 p 60101 search num 0 order type sort_types centreon_token XXXXX dupNbr[65] 1 dupNbr[66] 1 dupNbr[121] 1 dupNbr[147] 1 dupNbr[145] 1 dupNbr[146] 1 dupNbr[37] 1 dupNbr[112] 1 dupNbr[83] 1 dupNbr[132] 1 dupNbr[133] 1 dupNbr[134] 1 dupNbr[135] 1 dupNbr[136] 1 dupNbr[115] 1 dupNbr[53] 1 select[176] 1 dupNbr[176] 1 dupNbr[54] 1 dupNbr[55] 1 dupNbr[118] 1 dupNbr[127] 1 dupNbr[128] 1 dupNbr[56] 1 dupNbr[103] 1 dupNbr[104] 1 dupNbr[106] 1 dupNbr[107] 1 dupNbr[105] 1 dupNbr[124] 1 dupNbr[125] 1 o2 l 30 p 60101 search num 0 order type sort_types centreon_token XXXXX o d limit 30 centreon_token XXXXX
[2026-01-26T12:32:48+01:00] ERROR : Error while deleting host by API : Unknown error | {"custom":{"host_id":176},"exception":null,"default":{"request_infos":{"u ri":"/centreon/main.get.php?p=60101","http_method":"POST","server":"XXXXX"}}}
When trying to edit the same Host:
String Parameter p 60101
Form Data host_name=XXXX_1&host_alias=XXXX&host_address=192.168.0.XXX&host_snmp_community=&host_snmp_version=&nagios_server_id=1&host_location=360&tpSelect%5B0%5D=1&clone_order_template_0=0&dupSvTplAssoc%5BdupSvTplAssoc%5D=0&command_command_id=&command_command_id_arg1=&timeperiod_tp_id=&host_max_check_attempts=&host_check_interval=&host_retry_check_interval=&host_active_checks_enabled%5Bhost_active_checks_enabled%5D=2&host_passive_checks_enabled%5Bhost_passive_checks_enabled%5D=2&host_notifications_enabled%5Bhost_notifications_enabled%5D=2&host_notification_interval=&timeperiod_tp_id2=&host_first_notification_delay=&host_recovery_notification_delay=&host_hgs%5B%5D=4&host_acknowledgement_timeout=&host_check_freshness%5Bhost_check_freshness%5D=2&host_freshness_threshold=&host_flap_detection_enabled%5Bhost_flap_detection_enabled%5D=2&host_low_flap_threshold=&host_high_flap_threshold=&host_event_handler_enabled%5Bhost_event_handler_enabled%5D=2&command_command_id2=&command_command_id_arg2=&ehi_notes_url=&ehi_notes=&ehi_action_url=&ehi_icon_image=1&ehi_icon_image_alt=&geo_coords=&criticality_id=&host_activate%5Bhost_activate%5D=0&host_comment=&submitC=Save¯oFrom%5B%23index%23%5D=direct&host_id=176&host_register=1&o=c&initialValues=a%3A0%3A%7B%7D&select=&macChecker=1¢reon_token=XXXXX
ERROR : Error while deleting host by API : Your IP is not whitelisted | {"custom":{"host_id":176},"exception":null,"default":{"request_infos":{"uri":"/centreon/main.get.php?p=60101","http_method":"POST","server
(The Error IP was the Centreon Server IP, I added the IP in the whitelist which resolved it)
After that I now get
[2026-01-28T09:36:05+0100] [ERROR] No route found for "GET https:// <server>/centreon/api/latest/configuration/hosts/176": Method Not Allowed (Allow: DELETE, PATCH) {"custom":{"internal_error":"[object] (Symfony\\Component\\HttpKernel\\Exception\\MethodNotAllowedHttpException(code: 0): No route found for \"GET https:// <server>/centreon/api/latest/configuration/hosts/176\": Method Not Allowed (Allow: DELETE, PATCH) at /usr/share/centreon/vendor/symfony/http-kernel/EventListener/RouterListener.php:160)\n[previous exception] [object] (Symfony\\Component\\Routing\\Exception\\MethodNotAllowedException(code: 0): at /usr/share/centreon/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php:42)"},"exception":{"exceptions":[{"type":"Symfony\\Component\\HttpKernel\\Exception\\MethodNotAllowedHttpException","message":"No route found for \"GET https:// <server>/centreon/api/latest/configuration/hosts/176\": Method Not Allowed (Allow: DELETE, PATCH)","file":"/usr/share/centreon/vendor/symfony/http-kernel/EventListener/RouterListener.php","line":160,"code":0,"class":"Symfony\\Component\\HttpKernel\\EventListener\\RouterListener","method":"onKernelRequest"},{"type":"Symfony\\Component\\Routing\\Exception\\MethodNotAllowedException","message":"","file":"/usr/share/centreon/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php","line":42,"code":0,"class":"Symfony\\Component\\Routing\\Matcher\\CompiledUrlMatcher","method":"match"}],"traces":[{"file":"/usr/share/centreon/vendor/symfony/event-dispatcher/EventDispatcher.php","line":246,"function":"onKernelRequest","class":"Symfony\\Component\\HttpKernel\\EventListener\\RouterListener","type":"->"},{"file":"/usr/share/centreon/vendor/symfony/event-dispatcher/EventDispatcher.php","line":206,"function":"Symfony\\Component\\EventDispatcher\\{closure}","class":"Symfony\\Component\\EventDispatcher\\EventDispatcher","type":"::"},{"file":"/usr/share/centreon/vendor/symfony/event-dispatcher/EventDispatcher.php","line":56,"function":"callListeners","class":"Symfony\\Component\\EventDispatcher\\EventDispatcher","type":"->"},{"file":"/usr/share/centreon/vendor/symfony/http-kernel/HttpKernel.php","line":159,"function":"dispatch","class":"Symfony\\Component\\EventDispatcher\\EventDispatcher","type":"->"},{"file":"/usr/share/centreon/vendor/symfony/http-kernel/HttpKernel.php","line":76,"function":"handleRaw","class":"Symfony\\Component\\HttpKernel\\HttpKernel","type":"->"},{"file":"/usr/share/centreon/vendor/symfony/http-kernel/Kernel.php","line":182,"function":"handle","class":"Symfony\\Component\\HttpKernel\\HttpKernel","type":"->"},{"file":"/usr/share/centreon/src/App/Shared/Infrastructure/Legacy/LegacyKernelWrapper.php","line":55,"function":"handle","class":"Symfony\\Component\\HttpKernel\\Kernel","type":"->"},{"file":"/usr/share/centreon/src/App/Shared/Infrastructure/Legacy/ForwardLegacyRoutesListener.php","line":52,"function":"handle","class":"App\\Shared\\Infrastructure\\Legacy\\LegacyKernelWrapper","type":"->"},{"file":"/usr/share/centreon/vendor/symfony/event-dispatcher/EventDispatcher.php","line":246,"function":"__invoke","class":"App\\Shared\\Infrastructure\\Legacy\\ForwardLegacyRoutesListener","type":"->"},{"file":"/usr/share/centreon/vendor/symfony/event-dispatcher/EventDispatcher.php","line":206,"function":"Symfony\\Component\\EventDispatcher\\{closure}","class":"Symfony\\Component\\EventDispatcher\\EventDispatcher","type":"::"},{"file":"/usr/share/centreon/vendor/symfony/event-dispatcher/EventDispatcher.php","line":56,"function":"callListeners","class":"Symfony\\Component\\EventDispatcher\\EventDispatcher","type":"->"},{"file":"/usr/share/centreon/vendor/symfony/http-kernel/HttpKernel.php","line":159,"function":"dispatch","class":"Symfony\\Component\\EventDispatcher\\EventDispatcher","type":"->"},{"file":"/usr/share/centreon/vendor/symfony/http-kernel/HttpKernel.php","line":76,"function":"handleRaw","class":"Symfony\\Component\\HttpKernel\\HttpKernel","type":"->"},{"file":"/usr/share/centreon/vendor/symfony/http-kernel/Kernel.php","line":182,"function":"handle","class":"Symfony\\Component\\HttpKernel\\HttpKernel","type":"->"},{"file":"/usr/share/centreon/vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php","line":35,"function":"handle","class":"Symfony\\Component\\HttpKernel\\Kernel","type":"->"},{"file":"/usr/share/centreon/vendor/autoload_runtime.php","line":29,"function":"run","class":"Symfony\\Component\\Runtime\\Runner\\Symfony\\HttpKernelRunner","type":"->"},{"file":"/usr/share/centreon/api/index.php","line":24,"args":["/usr/share/centreon/vendor/autoload_runtime.php"],"function":"require_once"}]},"default":{"request_infos":{"uri":"/centreon/api/latest/configuration/hosts/176","http_method":"GET","server":" <server>"}}} [2026-01-28T09:44:25+0100] [ERROR] No route found for "GET https:// <server>/centreon/api/latest/configuration/hosts/176": Method Not Allowed (Allow: DELETE, PATCH) {"custom":{"internal_error":"[object] (Symfony\\Component\\HttpKernel\\Exception\\MethodNotAllowedHttpException(code: 0): No route found for \"GET https:// <server>/centreon/api/latest/configuration/hosts/176\": Method Not Allowed (Allow: DELETE, PATCH) at /usr/share/centreon/vendor/symfony/http-kernel/EventListener/RouterListener.php:160)\n[previous exception] [object] (Symfony\\Component\\Routing\\Exception\\MethodNotAllowedException(code: 0): at /usr/share/centreon/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php:42)"},"exception":{"exceptions":[{"type":"Symfony\\Component\\HttpKernel\\Exception\\MethodNotAllowedHttpException","message":"No route found for \"GET https:// <server>/centreon/api/latest/configuration/hosts/176\": Method Not Allowed (Allow: DELETE, PATCH)","file":"/usr/share/centreon/vendor/symfony/http-kernel/EventListener/RouterListener.php","line":160,"code":0,"class":"Symfony\\Component\\HttpKernel\\EventListener\\RouterListener","method":"onKernelRequest"},{"type":"Symfony\\Component\\Routing\\Exception\\MethodNotAllowedException","message":"","file":"/usr/share/centreon/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php","line":42,"code":0,"class":"Symfony\\Component\\Routing\\Matcher\\CompiledUrlMatcher","method":"match"}],"traces":[{"file":"/usr/share/centreon/vendor/symfony/event-dispatcher/EventDispatcher.php","line":246,"function":"onKernelRequest","class":"Symfony\\Component\\HttpKernel\\EventListener\\RouterListener","type":"->"},{"file":"/usr/share/centreon/vendor/symfony/event-dispatcher/EventDispatcher.php","line":206,"function":"Symfony\\Component\\EventDispatcher\\{closure}","class":"Symfony\\Component\\EventDispatcher\\EventDispatcher","type":"::"},{"file":"/usr/share/centreon/vendor/symfony/event-dispatcher/EventDispatcher.php","line":56,"function":"callListeners","class":"Symfony\\Component\\EventDispatcher\\EventDispatcher","type":"->"},{"file":"/usr/share/centreon/vendor/symfony/http-kernel/HttpKernel.php","line":159,"function":"dispatch","class":"Symfony\\Component\\EventDispatcher\\EventDispatcher","type":"->"},{"file":"/usr/share/centreon/vendor/symfony/http-kernel/HttpKernel.php","line":76,"function":"handleRaw","class":"Symfony\\Component\\HttpKernel\\HttpKernel","type":"->"},{"file":"/usr/share/centreon/vendor/symfony/http-kernel/Kernel.php","line":182,"function":"handle","class":"Symfony\\Component\\HttpKernel\\HttpKernel","type":"->"},{"file":"/usr/share/centreon/src/App/Shared/Infrastructure/Legacy/LegacyKernelWrapper.php","line":55,"function":"handle","class":"Symfony\\Component\\HttpKernel\\Kernel","type":"->"},{"file":"/usr/share/centreon/src/App/Shared/Infrastructure/Legacy/ForwardLegacyRoutesListener.php","line":52,"function":"handle","class":"App\\Shared\\Infrastructure\\Legacy\\LegacyKernelWrapper","type":"->"},{"file":"/usr/share/centreon/vendor/symfony/event-dispatcher/EventDispatcher.php","line":246,"function":"__invoke","class":"App\\Shared\\Infrastructure\\Legacy\\ForwardLegacyRoutesListener","type":"->"},{"file":"/usr/share/centreon/vendor/symfony/event-dispatcher/EventDispatcher.php","line":206,"function":"Symfony\\Component\\EventDispatcher\\{closure}","class":"Symfony\\Component\\EventDispatcher\\EventDispatcher","type":"::"},{"file":"/usr/share/centreon/vendor/symfony/event-dispatcher/EventDispatcher.php","line":56,"function":"callListeners","class":"Symfony\\Component\\EventDispatcher\\EventDispatcher","type":"->"},{"file":"/usr/share/centreon/vendor/symfony/http-kernel/HttpKernel.php","line":159,"function":"dispatch","class":"Symfony\\Component\\EventDispatcher\\EventDispatcher","type":"->"},{"file":"/usr/share/centreon/vendor/symfony/http-kernel/HttpKernel.php","line":76,"function":"handleRaw","class":"Symfony\\Component\\HttpKernel\\HttpKernel","type":"->"},{"file":"/usr/share/centreon/vendor/symfony/http-kernel/Kernel.php","line":182,"function":"handle","class":"Symfony\\Component\\HttpKernel\\HttpKernel","type":"->"},{"file":"/usr/share/centreon/vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php","line":35,"function":"handle","class":"Symfony\\Component\\HttpKernel\\Kernel","type":"->"},{"file":"/usr/share/centreon/vendor/autoload_runtime.php","line":29,"function":"run","class":"Symfony\\Component\\Runtime\\Runner\\Symfony\\HttpKernelRunner","type":"->"},{"file":"/usr/share/centreon/api/index.php","line":24,"args":["/usr/share/centreon/vendor/autoload_runtime.php"],"function":"require_once"}]},"default":{"request_infos":{"uri":"/centreon/api/latest/configuration/hosts/176","http_method":"GET","server":" <server>"}}}
And when I try deleting it via the UI I get
[2026-01-28T09:52:48+01:00] ERROR : Error while deleting host by API : Missing Login Attribute | {"custom":{"host_id":176},"exception":null,"default":{"request_infos":{"uri":"/centreon/main.get.php?p=60101","http_method":"POST","server":"<server>"}}}
For anyone facing the same issues with gssapi and Kerberos here is the solution we found.
10-centreon.conf
<VirtualHost *:80> ServerName <hostname> RewriteEngine On # REGEL 1: Rewrite API with 307 RewriteCond %{REQUEST_URI} ^/centreon/api RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=307,L]
# REGEL 2: Rewrite everything else with 301 RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L] </VirtualHost>
<LocationMatch ^/centreon/api/.*> AuthType None Require all granted SetEnv REMOTE_USER admin RequestHeader set REMOTE_USER admin </LocationMatch>
<LocationMatch ^/centreon/(?!api/).*> SSLRequireSSL AuthType GSSAPI AuthName "GSSAPI Single Sign On Login" GssapiCredStore keytab:/etc/httpd/conf.d/XXXX.keytab GssapiSSLonly On GssapiLocalName On Require valid-user
ErrorDocument 401 '<html><meta http-equiv="refresh" content="0; URL=/centreon"><body>Kerberos authentication did not pass.</body></html>' ErrorDocument 500 '<html><meta http-equiv="refresh" content="0; URL=/centreon"><body>Kerberos authentication did not pass.</body></html>' </LocationMatch>
Is this a bug that you need to set the REMOTE_USER for it to work? @ponchoh @Alexandre Belhomme….