mirror of
https://github.com/octoleo/docker-joomla.git
synced 2024-10-31 18:52:28 +00:00
ffbb7e3854
Using PHP 8.1, the `makedb.php` script fails if the connection cannot be established at the first try. This is because according to https://www.php.net/manual/en/mysqli-driver.report-mode.php, the default mysqli reporting mode is now `MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT` while it was `MYSQLI_REPORT_OFF` before. The change makes `mysqli::__construct()` throw an exception, which is not caught. This commit restores the old behavior.
48 lines
1002 B
PHP
48 lines
1002 B
PHP
<?php
|
|
// Args: 0 => makedb.php, 1 => "$JOOMLA_DB_HOST", 2 => "$JOOMLA_DB_USER", 3 => "$JOOMLA_DB_PASSWORD", 4 => "$JOOMLA_DB_NAME"
|
|
$stderr = fopen('php://stderr', 'w');
|
|
fwrite($stderr, "\nEnsuring Joomla database is present\n");
|
|
|
|
if (strpos($argv[1], ':') !== false)
|
|
{
|
|
list($host, $port) = explode(':', $argv[1], 2);
|
|
}
|
|
else
|
|
{
|
|
$host = $argv[1];
|
|
$port = 3306;
|
|
}
|
|
|
|
$maxTries = 10;
|
|
|
|
mysqli_report(MYSQLI_REPORT_OFF);
|
|
do
|
|
{
|
|
$mysql = new mysqli($host, $argv[2], $argv[3], '', (int) $port);
|
|
|
|
if ($mysql->connect_error)
|
|
{
|
|
fwrite($stderr, "\nMySQL Connection Error: ({$mysql->connect_errno}) {$mysql->connect_error}\n");
|
|
--$maxTries;
|
|
|
|
if ($maxTries <= 0)
|
|
{
|
|
exit(1);
|
|
}
|
|
|
|
sleep(3);
|
|
}
|
|
}
|
|
while ($mysql->connect_error);
|
|
|
|
if (!$mysql->query('CREATE DATABASE IF NOT EXISTS `' . $mysql->real_escape_string($argv[4]) . '`'))
|
|
{
|
|
fwrite($stderr, "\nMySQL 'CREATE DATABASE' Error: " . $mysql->error . "\n");
|
|
$mysql->close();
|
|
exit(1);
|
|
}
|
|
|
|
fwrite($stderr, "\nMySQL Database Created\n");
|
|
|
|
$mysql->close();
|