id,summary,reporter,owner,description,type,status,priority,milestone,component,version,severity,resolution,keywords,cc,mlocked 13478,mythweb search.php throws errors,goldpizza44,Stuart Auchterlonie,"I installed Fedora 30 with: {{{ Source RPM : mythweb-30.0-2.fc30.src.rpm Build Date : Mon 04 Mar 2019 12:35:26 PM EST }}} I didn't see this error on earlier versions of Fedora, so this may be related to the php-fpm package on Fedora 30: {{{ Source RPM : php-7.3.8-1.fc30.src.rpm Build Date : Tue 30 Jul 2019 08:07:57 AM EDT }}} I find that attempting simple searches: curl 'http://localhost/mythweb/tv/search?type=q&s=elementary&search=Search' of programs was failing with a error in the /var/log/php-fpm/www-error.log of: {{{ [25-Aug-2019 10:06:02 America/New_York] PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 16384 bytes) in /usr/share/mythweb/classes/Database/Query/mysqlicompat.php on line 69 [25-Aug-2019 10:06:02 America/New_York] PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 24576 bytes) in Unknown on line 0 [25-Aug-2019 10:06:02 America/New_York] PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 24576 bytes) in /usr/share/mythweb/includes/errors.php on line 191 [25-Aug-2019 10:06:02 America/New_York] PHP Warning: Unknown: Cannot call session save handler in a recursive manner in Unknown on line 0 }}} I initially changed the memory limit in PHP to 1Gb but it exhausted that as well. I debugged and found that PHP was showing errors in: mythweb/modules/tv/search.php {{{ Warning at /usr/share/mythweb/modules/tv/search.php, line 464: !!NoTrans: preg_replace(): Compilation failed: invalid range in character class at offset 3!! }}} The line in question is search.php:464 (and lines 460 and 462) use a REGEX as shown: {{{ return $db->escape('%'.preg_replace('/[\\s-_]+/', '%', $value).'%'); }}} I am not a PHP expert, but I know regex and the '[\ \s-_]+' is causing the issue. I am not sure what the original intention of this REGEX is. {{{ \\ would match a single \ \s would match whitespace x-y would match a range of chars (in this case \s to _) which does make sense. }}} I changed to '[\s_-]+' which matches whitespace, an underscore, or a minus and that fixed my issue. I also see errors on lines 347 and 361 regarding 'continue' which the error says should be 'continue 2' This is a different error but seems to be a bug as well per: https://www.php.net/manual/en/control-structures.continue.php ------------------------------------------------ My changes: {{{ diff search.php /usr/share/mythweb/modules/tv/search.php 347c347 < continue; --- > continue 2; 361c361 < continue; --- > continue 2; 460c460 < return $db->escape(preg_replace('/[\\s-_]+/', '%', $value).'%'); --- > return $db->escape(preg_replace('/[\s_-]+/', '%', $value).'%'); 462c462 < return $db->escape('%'.preg_replace('/[\\s-_]+/', '%', $value)); --- > return $db->escape('%'.preg_replace('/[\s_-]+/', '%', $value)); 464c464 < return $db->escape('%'.preg_replace('/[\\s-_]+/', '%', $value).'%'); --- > return $db->escape('%'.preg_replace('/[\s_-]+/', '%', $value).'%'); }}} ",Bug Report - General,closed,minor,31.0,Plugin - MythWeb,v30-fixes,medium,Fixed,,,0