DigitalSparky Posted April 16, 2017 Report 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
Tyson Posted April 26, 2017 Report Posted April 26, 2017 Thanks for the report. This will be fixed in CORE-2368 for the next release. Michael 1
Recommended Posts