DigitalSparky Posted April 16, 2017 Report Share Posted April 16, 2017 Hi folks, Couldn't find this reported, however it seems there's a bit of an issue when attempting to install 4.0.0 using PHP 7. It appears there's a syntax error when taking into account MySQL Ports I've configured my development environment to use MySQL on port 13306 and entered the host as 127.0.0.1:13306 Installation works perfectly on PHP 5.6.23 (via FPM & CLI), however via PHP 7.0.18 it throws the following error: SQLSTATE[HY000] [2002] Failed to parse address "127.0.0.1:13306:3306" Changing config.php to the host as 127.0.0.1 and port 13306 does not remedy this issue, as such it appears that I'm unable to use PHP 7.0 with MySQL from a fresh install. Oddly enough an upgrade, admittedly on a slightly older php7 version, worked without issue. Note: it was installed using 127.0.0.1:13306 in the host string, as there was no separate port, despite the configuration having a port option. The exception is occurring on line 74 of core/ServiceProviders/MinphpBridge.php (the new PDO connection setup). var_dump($dbInfo); shows the following data: array(10) { ["driver"]=> string(5) "mysql" ["host"]=> string(9) "127.0.0.1" ["port"]=> string(5) "13306" ["database"]=> string(6) "blesta" ["user"]=> string(6) "blesta" ["pass"]=> string(6) "blesta" ["persistent"]=> bool(false) ["charset_query"]=> string(16) "SET NAMES 'utf8'" ["sqlmode_query"]=> string(26) "SET sql_mode='TRADITIONAL'" ["options"]=> array(0) { } } I've confirmed via debug that the data being input to new PDO is:string(40) "mysql:dbname=blesta;host=127.0.0.1:13306" Changing lines 64 to 74 from: $connection = new PDO( $dbInfo['driver'] . ':dbname=' . $dbInfo['database'] . ';host=' . $dbInfo['host'] . ( isset($dbInfo['port']) ? ':' . $dbInfo['port'] : '' ), $dbInfo['user'], $dbInfo['pass'], $options ); to $connection = new PDO( $dbInfo['driver'] . ':dbname=' . $dbInfo['database'] . ';host=' . $dbInfo['host'] . ( isset($dbInfo['port']) ? ';port=' . $dbInfo['port'] : '' ), $dbInfo['user'], $dbInfo['pass'], $options ); Resolves the issue, and the site is now operational. This fix obviously relies on the port being explicitly set, so having a field to fill in that port is still required. Edit: looks like it worked doing the upgrade because my other upgrade was on my other laptop, that runs mysql on 3306... activa and Adam 2 Link to comment Share on other sites More sharing options...
Tyson Posted April 26, 2017 Report Share Posted April 26, 2017 Thanks for the report. This will be fixed in CORE-2368 for the next release. Michael 1 Link to comment Share on other sites More sharing options...
Recommended Posts