From: David C R. <dr...@su...> - 2023-09-01 01:54:25
|
Hello sqmail devs, Happy to find the update squirrelmail that I can run on PHP8! (had been building 5.6 every time ICU changed for a while...). Normal setup, but I encountered a warning during src/conftest.php check that I thought I would pass on. Server: Running on Archlinux: 6.4.12-arch1-1 Apache/2.4.57 (Unix) OpenSSL/3.1.2 mod_fcgid/2.3.9 PHP/8.1.22 postfix 3.8.1-3 dovecot 2.3.20-2 The PHP/8.1.22 is from the Archlinux php-legacy packages specifically held back to the 8.1 release to avoid nextcloud breakage. Arch packages 8.2 as php. conftest.php warning: <snip> Warning: Undefined variable $verify_peer in /srv/http/htdocs/squirrelmail/src/configtest.php on line 746 verify_peer : IMAP server ready (* OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ AUTH=PLAIN AUTH=LOGIN] Dovecot ready.) Capabilities: * CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ AUTH=PLAIN AUTH=LOGIN Checking internationalization (i18n) settings... gettext - Gettext functions are unavailable. SquirrelMail will use slower internal gettext functions. mbstring - Mbstring functions are available. recode - Recode functions are unavailable. iconv - Iconv functions are available. timezone - Webmail users can change their time zone settings. Current time zone is UTC. Checking database functions... not using database functionality. Checking LDAP functions... not using LDAP functionality. Summary Congratulations, your SquirrelMail setup looks fine to me! Login now Login works fine, but the normal area where the heading controls and messages are displayed is blank. The only error logged is: [Thu Aug 31 20:43:42.072929 2023] [fcgid:warn] [pid 12712] [client 192.168.6.104:56166] mod_fcgid: stderr: PHP Parse error: syntax error, unexpected token "[" in /srv/http/htdocs/squirrelmail/functions/imap_messages.php on line 120, referer: https://2pi.3111skyline.com/squirrelmail/src/left_main.php That corresponds to the following line in sqimap_toggle_flag(): /** * Set a flag on the provided uid list * @param resource imap connection * @param mixed $id Normally an array which is a list with message UIDs to be flagged * or a string range such as "1:*" or a simple integer * @param string $flag Flags to set/unset flags can be i.e.'\Seen', '\Answered', '\Seen \Answered' * @param bool $set add (true) or remove (false) the provided flag * @param bool $handle_errors Show error messages in case of a NO, BAD or BYE response * @return array $aMessageList array with messages containing the new flags and UID @see parseFetch */ function sqimap_toggle_flag($imap_stream, $id, $flag, $set, $handle_errors) { $msgs_id = sqimap_message_list_squisher($id); $set_string = ($set ? '+' : '-'); /* * We need to return the data in the same order as the caller supplied * in $id, but IMAP servers are free to return responses in * whatever order they wish... So we need to re-sort manually */ $aMessageList = array(); if (is_array($id)) { for ($i=0; $i<count($id); $i++) { $aMessageList[$id[$i]] = array(); } } $aResponse = sqimap_run_command_list($imap_stream, "STORE $msgs_id ".$set_string."FLAGS ($flag)", $handle_error s, $response, $message, TRUE); // parse the fetch response $parseFetchResults=parseFetch($aResponse,$aMessageList); // some broken IMAP servers do not return UID elements on UID STORE // if this is the case, then we need to do a UID FETCH if (!empty($parseFetchResults) && !isset($parseFetchResults)['UID']) { 120 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ $aResponse = sqimap_run_command_list($imap_stream, "FETCH $msgs_id (FLAGS)", $handle_errors, $response, $me ssage, TRUE); $parseFetchResults = parseFetch($aResponse,$aMessageList); } return ($parseFetchResults); } The problem is the index ['UID'] is applied to !isset($parseFetchResults)['UID'] where it should be applied as !isset(($parseFetchResults)['UID'])) Adding the paren solves that issue. Let me know on the warning. -- David C. Rankin, J.D.,P.E. |