Hallo zusammen,
ich verwende eGroupware 17.1 auf Debian 9 mit Nginx und PHP7.
Mir ist im Error-Log immer wieder folgender Fehler aufgefallen:
[error] 26514#26514: *887 FastCGI sent in stderr: “PHP message: PHP Warning: substr() expects parameter 1 to be string, array given in /usr/share/egroupware/api/src/Framework.php
on line 488
PHP message: #1 /usr/share/egroupware/api/src/Framework.php(488): substr(Array, 0, 4)
PHP message: #2 /usr/share/egroupware/api/src/Framework/Ajax.php(256): EGroupware\Api\Framework->_get_header(Array)
PHP message: #3 /usr/share/egroupware/pixelegg/inc/class.pixelegg_framework.inc.php(68): EGroupware\Api\Framework\Ajax->header(Array)
PHP message: #4 /usr/share/egroupware/api/src/Framework.php(291): pixelegg_framework->header()
PHP message: #5 /usr/share/egroupware/api/src/Framework/Login.php(232): EGroupware\Api\Framework->render(’<script src=”./…’, false, false)
PHP message: #6 /usr/share/egroupware/api/src/Framework.php(354): EGroupware\Api\Framework\Login->screen(’?phpgw_forward=…’, NULL)
PHP message: #7 /usr/share/egroupware/pixelegg/inc/class.pixelegg_framework.inc.php(226): EGroupware\Api\Framework->login_screen(’?phpgw_forward=…’, NULL)
PHP message: #8 /usr/share/egroupware/login.php(422): pixelegg_framework->login_screen(’?phpgw_forward=…’, NULL)
PHP message: #9 {main}
PHP message: # Instance=default, User=, Request=GET
Nach ein bisschen Recherche hat sich herausgestellt, dass das Problem beim Favicon entsteht - sowohl bei einem mit eGroupware hochgeladenen und einer URL.
Ist das Problem schon bekannt, oder anderweitig vorgekommen?
Ich habe für meinen Teil einen kleinen Bugfix gemacht.
In der Datei api/scr/Framework.php habe ich aus:
if (substr($GLOBALS[‘egw_info’][‘server’][‘favicon_file’],0,4) == ‘http’)
{
$var[‘favicon_file’] = $GLOBALS[‘egw_info’][‘server’][‘favicon_file’];
}
else
{
$var[‘favicon_file’] = Image::find(‘api’, $GLOBALS[‘egw_info’][‘server’][‘favicon_file’] ?
$GLOBALS[‘egw_info’][‘server’][‘favicon_file’] : ‘favicon.ico’);
}
folgendes gemacht:
//Array-Feld [0] angefuegt, damit ein String ausgegeben wird
if (substr($GLOBALS[‘egw_info’][‘server’][‘favicon_file’][0],0,4) == ‘http’)
{
$var[‘favicon_file’] = $GLOBALS[‘egw_info’][‘server’][‘favicon_file’][0];
}
//elseif fuer Dateien, welche durch anon_images.php verwaltet werden (wurde anscheinend nicht beruecksichtigt)
elseif (substr($GLOBALS[‘egw_info’][‘server’][‘favicon_file’][0],0,21) == ‘/api/anon_images.php?’)
{
$var[‘favicon_file’] = (isset($_SERVER[‘HTTPS’]) && $_SERVER[‘HTTPS’] === ‘on’ ? “https” : “http”) . “://”.$_SERVER[HTTP_HOST].$GLOBALS[‘egw_info’][‘server’][‘webserver_url’].$GLOBALS[‘egw_info’][‘server’][‘favicon_file’][0];
}
else
{
$var[‘favicon_file’] = Image::find(‘api’, $GLOBALS[‘egw_info’][‘server’][‘favicon_file’] ?
$GLOBALS[‘egw_info’][‘server’][‘favicon_file’] : ‘favicon.ico’);
}
Oder ist es evtl. ein Problem meiner Server-Konfiguration?
Gruß
Max