Я работал над настройкой testlink на новой виртуальной машине centos 7, которую я развернул сегодня утром. Это, очевидно, совершенно новый сервер, на котором никогда ранее не устанавливалось программное обеспечение.

Но когда я прохожу через веб-портал для установки, установка по умолчанию идет на обновление и не создает мою базу данных на втором последнем экране установки.

Я использую следующую настройку:

  • nginx 1.14.2
  • MySQL 5,7
  • php 7.2

Вот скриншоты моего текущего процесса установки:

Выберите Новая установка:

Тестовая ссылка Установить Пуск

Согласны с условиями:

условия и положения

Проверьте системные требования:

Требования к Sysetm

Настройка пользователей БД и доступа (на этом этапе говорится, что я запросил обновление, и, как видно из образа 1, на выбор доступна только новая установка, и у меня нет исходной установки для обновления:

Настройка базы данных

Подтверждение соединения с БД сработало, и он смог получить доступ к БД testlink, но в нем говорится, что я пытаюсь выполнить обновление с версии 1.7 и что мне нужно выбрать обновление, но для этого нет доступных опций.

Сбой установки

Кто-нибудь сталкивался с этой проблемой? У нас есть работа вокруг?

1 ответ1

0

Я никогда не думал, что суперпользователь будет таким полезным. Довольно удивительно, что мы рекомендуем обратиться за помощью к подмножеству stackoverflow, которое никто на самом деле не проверяет и не использует ...

В любом случае, я восстановил свою коробку и перешел на версию программного обеспечения и смог решить проблему. Существует проблема с новейшей версией mysql и синтаксисом запросов программного обеспечения.

Чтобы обойти это, я изменил код php в installUtils.php

// 20070310 - $the_host -> $db_host        
if (strlen(trim($db_host)) != 0)
{
  $stmt .= "@" . "'" . $dbhandler->prepare_string($db_host) . "'";
}         
$stmt .= " IDENTIFIED BY '" .  $passwd . "'"; // this is bad

Должно быть:

   // 20070310 - $the_host -> $db_host        
if (strlen(trim($db_host)) != 0)
{
  $stmt .= "@" . "'" . $dbhandler->prepare_string($db_host) . "'";
}         
// $stmt .= " IDENTIFIED BY '" .  $passwd . "'"; // this is good

А также:

if( strcasecmp('localhost',$db_host) != 0)
  {
    // 20060514 - franciscom - missing 
    $stmt = "GRANT SELECT, UPDATE, DELETE, INSERT ON " . 
             "`" . $dbhandler->prepare_string($db_name) . "`" . ".* TO " . 
             "'" . $dbhandler->prepare_string($login) . "'@'localhost'" .
            " IDENTIFIED BY '" .  $passwd . "'"; // this is bad
    if ( !@$dbhandler->exec_query($stmt) ) 
    {
      $op->msg = "ko - " . $dbhandler->error_msg();
      $op->status_ok=false;
    }
  }
}

Должно быть:

if( strcasecmp('localhost',$db_host) != 0)
  {
    // 20060514 - franciscom - missing 
    $stmt = "GRANT SELECT, UPDATE, DELETE, INSERT ON " . 
             "`" . $dbhandler->prepare_string($db_name) . "`" . ".* TO " . 
             "'" . $dbhandler->prepare_string($login) . "'@'localhost'"; // this is good
    if ( !@$dbhandler->exec_query($stmt) ) 
    {
      $op->msg = "ko - " . $dbhandler->error_msg();
      $op->status_ok=false;
    }
  }
}

Еще раз, спасибо за поддержку, не уверен, что я буду делать с вами.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .