This issue is automatically created based on existing pull request: #40849: Fix PHP 8.5: KEY_MYSQL_SSL_VERIFY hardcoded as 1014 collides with ren…
…amed Pdo\Mysql constant
PHP 8.5 removed ATTR_SERVER_PUBLIC_KEY, shifting all Pdo\Mysql constant values down by one. KEY_MYSQL_SSL_VERIFY was hardcoded as 1014 (a legacy workaround for PHP 7.1.3 support) which now maps to ATTR_LOCAL_INFILE_DIRECTORY instead of ATTR_SSL_VERIFY_SERVER_CERT, causing every Magento 2.4.9 installation on PHP 8.5 to crash on boot with an open_basedir error.
Apply the same PHP_VERSION_ID >= 80400 pattern already used for KEY_MYSQL_SSL_KEY, KEY_MYSQL_SSL_CERT and KEY_MYSQL_SSL_CA.
Description (*)
PHP 8.5 removed Pdo\Mysql::ATTR_SERVER_PUBLIC_KEY, shifting all constant integer values down by one. KEY_MYSQL_SSL_VERIFY was hardcoded as 1014 (legacy workaround for PHP 7.1.3). On PHP 8.5, 1014 is now ATTR_LOCAL_INFILE_DIRECTORY which expects a path — passing false crashes every installation on boot with an open_basedir PDOException.
Applies the same PHP_VERSION_ID >= 80400 pattern already used for KEY_MYSQL_SSL_KEY, KEY_MYSQL_SSL_CERT and KEY_MYSQL_SSL_CA.
Related Pull Requests
Manual testing scenarios (*)
- Fresh install Magento 2.4.9 on PHP 8.5 with open_basedir — crashes without fix
- Apply fix, reinstall — boots successfully
- Check env.php: driver_options contains 1013 => false (correct) instead of 1014 => false
Questions or comments
Contribution checklist (*)
This issue is automatically created based on existing pull request: #40849: Fix PHP 8.5: KEY_MYSQL_SSL_VERIFY hardcoded as 1014 collides with ren…
…amed Pdo\Mysql constant
PHP 8.5 removed ATTR_SERVER_PUBLIC_KEY, shifting all Pdo\Mysql constant values down by one. KEY_MYSQL_SSL_VERIFY was hardcoded as 1014 (a legacy workaround for PHP 7.1.3 support) which now maps to ATTR_LOCAL_INFILE_DIRECTORY instead of ATTR_SSL_VERIFY_SERVER_CERT, causing every Magento 2.4.9 installation on PHP 8.5 to crash on boot with an open_basedir error.
Apply the same PHP_VERSION_ID >= 80400 pattern already used for KEY_MYSQL_SSL_KEY, KEY_MYSQL_SSL_CERT and KEY_MYSQL_SSL_CA.
Description (*)
PHP 8.5 removed Pdo\Mysql::ATTR_SERVER_PUBLIC_KEY, shifting all constant integer values down by one. KEY_MYSQL_SSL_VERIFY was hardcoded as 1014 (legacy workaround for PHP 7.1.3). On PHP 8.5, 1014 is now ATTR_LOCAL_INFILE_DIRECTORY which expects a path — passing false crashes every installation on boot with an open_basedir PDOException.
Applies the same PHP_VERSION_ID >= 80400 pattern already used for KEY_MYSQL_SSL_KEY, KEY_MYSQL_SSL_CERT and KEY_MYSQL_SSL_CA.
Related Pull Requests
Manual testing scenarios (*)
Questions or comments
Contribution checklist (*)