View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0017560||phpList 3 application||Installation||public||17-12-14 11:49||21-06-18 13:00|
|Summary||0017560: Is mb_string required to run phplist?|
|Description||There have been a couple of problem reports on the user forum about phplist pages not displaying correctly. The solution appears to have been to enable mb_string. See https://forums.phplist.com/viewtopic.php?f=34&t=41608|
This pull request from earlier this year https://github.com/michield/phplist/pull/27 unconditionally calls mb_strtolower().
If mb_string is now required then perhaps there should be a check for it being installed during initialisation, in addition to including that on the requirements page https://www.phplist.com/system_requirements
Ah, interesting. I thought mb_string was part of PHP by default, according to the docs. Clearly not.
I actually had come across this problem and sorted it like this:
I guess that hasn't gone into a new release yet. But yes, mb_string is needed.
foudn an interesting method to check dependencies in the code:
it doesn't do recursive, but I get
Found 1450 function calls and 761 object instantiations in your script.
Function mailqueue_throttle not defined.
Function domain_batch_period not defined.
Function adonewconnection not defined.
Function attributevalueselect not defined.
Function mysqli_result not defined.
Function resizeimagefile not defined.
Function getleaftemplate not defined.
Function htmlemail not defined.
Function normalizeurl not defined.
Function invalidargumentexception not defined.
Function badmethodcallexception not defined.
Function domxpath not defined.
Function null not defined.
Function isnormalized not defined.
finds the requirement of the following PHP extensions:
standard pcre imap Core date hash SPL filter openssl mbstring session curl xml iconv json gettext SimpleXML mysqli mysql libxml ctype fileinfo gd ftp
At the end of index.php there is some processing testing whether mb_strtolower() exists and if not then defining it to be strtolower().
The code is in the wrong place because mb_strtolower() is called in parseCline().
Because the new definition is within an if statement, the new function is not created until that statement is executed, which is after parseCline() has been called.
Need to position the code at the top of the file instead.
||yes, it can't even go in any of the library files, because the parseCline is called before including those.|
leaving the issue open until the complete dependency list has been resolved and published somewhere.