[mythtv-commits] Ticket #13478: mythweb search.php throws errors
MythTV
noreply at mythtv.org
Sun Aug 25 15:08:15 UTC 2019
#13478: mythweb search.php throws errors
--------------------------------------+---------------------------------
Reporter: goldpizza44 | Owner: Stuart Auchterlonie
Type: Bug Report - General | Status: new
Priority: minor | Milestone: needs_triage
Component: Plugin - MythWeb | Version: v30-fixes
Severity: medium | Keywords:
Ticket locked: 0 |
--------------------------------------+---------------------------------
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).'%');
}}}
--
Ticket URL: <https://code.mythtv.org/trac/ticket/13478>
MythTV <http://www.mythtv.org>
MythTV Media Center
More information about the mythtv-commits
mailing list