我一直在今天早上部署的全新 centos 7 VM 上设置 testlink。这显然是一台全新的服务器,之前从未安装过该软件。
但是,当我通过 Web 门户进行安装时,安装默认为升级,并且不会在第二个最终安装屏幕上创建我的数据库。
我正在使用以下设置:
- nginx 1.14.2
- mysql 5.7
- PHP 7.2
以下是我当前安装过程的屏幕截图:
选择新安装:
同意条款:
验证系统要求:
设置数据库用户和访问权限(此时,它说我已经请求升级,并且从图 1 中可以看到,只有全新安装可供选择,而我没有原始安装可以更新):
确认 DB 连接有效并且能够访问 testlink DB,但它说我正在尝试从版本 1.7 升级并且我应该选择升级,但没有可用的选项可以执行此操作。
有人遇到过这个问题吗?我们有解决方法吗?
答案1
我从未想过超级用户会如此有帮助。我们被建议在没有人真正检查或使用的 stackoverflow 子集上寻求帮助,这真是太棒了……
无论如何,我重建了我的机器,并下载了该软件的一个版本,并解决了这个问题。最新版本的 mysql 和软件查询的语法存在问题。
为了解决这个问题,我修改了 installUtils.php 中的 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;
}
}
}
再次感谢您的支持,如果没有您我真不知道该怎么办。