Коллеги, добрый день.
У кого был опыт развертывания/внедрения?
Помимо синтаксических ошибок в php существует масса проблем с доступом к БД при условии, что одна и та же ссылка - Search Requirement Specifications в 1.9.20 отрабатывает корректно, в 2.0.0-20201221-01 получаем:
============================================================================== DB Access Error - debug_print_backtrace() OUTPUT START ATTENTION: Enabling more debug info will produce path disclosure weakness (CWE-200) Having this additional Information could be useful for reporting issue to development TEAM. ============================================================================== HHHH#0 database->exec_query( SELECT SRS.id,NH.name AS title FROM req_specs SRS, nodes_hierarchy NH , requirements REQ WHERE testproject_id= AND SRS.id=NH.id AND SRS.id = REQ.srs_id ORDER BY title, -1) called at [C:\wamp64\www\testlink2.0.0-20201221-01\lib\functions\database.class.php:723] #1 database->fetchColumnsIntoMap( SELECT SRS.id,NH.name AS title FROM req_specs SRS, nodes_hierarchy NH , requirements REQ WHERE testproject_id= AND SRS.id=NH.id AND SRS.id = REQ.srs_id ORDER BY title, id, title) called at [C:\wamp64\www\testlink2.0.0-20201221-01\lib\functions\testproject.class.php:1455] #2 testproject->getOptionReqSpec(, 1) called at [C:\wamp64\www\testlink2.0.0-20201221-01\lib\requirements\reqSpecSearchForm.php:38]
фактически не нравится строка 723 функции:
function fetchColumnsIntoMap($sql,$column1,$column2,$cumulative=0,$limit = -1) { $result = $this->exec_query($sql,$limit); $items = null; if ($result) { while ($myrow = $this->fetch_array($result)) { if($cumulative) { $items[$myrow[$column1]][] = $myrow[$column2]; } else { $items[$myrow[$column1]] = $myrow[$column2]; } } } unset($result); return $items; }
выделил её.
Так же не устроила строка 1455 функции:
function getOptionReqSpec($tproject_id,$get_not_empty=self::GET_EMPTY_REQSPEC) { $additional_table=''; $additional_join=''; if( $get_not_empty ) { $additional_table=", {$this->tables['requirements']} REQ "; $additional_join=" AND SRS.id = REQ.srs_id "; } $sql = " SELECT SRS.id,NH.name AS title " . " FROM {$this->tables['req_specs']} SRS, " . " {$this->tables['nodes_hierarchy']} NH " . $additional_table . " WHERE testproject_id={$tproject_id} " . " AND SRS.id=NH.id " . $additional_join . " ORDER BY title"; return $this->db->fetchColumnsIntoMap($sql,'id','title'); //return $this->db->fetchRowsIntoMap($sql,'id'); SRS.doc_id, } // function end
выделил.
Ну и крайняя строка со ссылкой на 38 строку:
$reqSpecSet = $tproject_mgr->getOptionReqSpec($args->tprojectID,testproject::GET_NOT_EMPTY_REQSPEC);
Есть ли у кого-нибудь соображения на этот счет? )