그누보드5 연동관련 질문드립니다.
본문
안녕하세요
현재 그누보드5 php7 버전을 이용중입니다. 현재 큐패스라는 그누보드가 지원이 되어 연동을 하려고 진행중 이러한 Fatal error: Uncaught Error: Call to undefined function mysql_query() in /ykk007/www/qpass/qpass_install.php:13 Stack trace: #0 {main} thrown in /ykk007/www/qpass/qpass_install.php on line 13 오류구문이 나오기에 혼자서 여러 사이트에 검색을 해보았으며 제 생각에는 php7에서 지원이 안되는 명령어를 사용하여 이러한 오류가 발생하는 것 같아보입니다.
하지만 제가 지식이 부족하여 어떤오류인지도 확실히 모르며 어떻게 해결 해야 될 지 많은 답변 부탁드립니다.
만약 지원이 안되는 명령어를 사용하여 오류가 발생했다면 php7 버전에서 사용 할 방법은 있을까요?
현재 php7 버전에서는 mysql_query, mysql_connect 함수 사용이 불가하며 mysqli_connect, mysqli_query 등으로 변경하여 이용이 가능 하다는걸 알아냈지만 수정을 어떻게 해야 될 지 잘 모르겠습니다.
답변 4
아마도 설치하신 큐패스 mysql 가 mysql 4.x 버전대에서 개발한것으로 알고 있습니다.
아래 내용를 참고 하시기 바랍니다.
function sql_query($sql, $error=G5_DISPLAY_SQL_ERROR, $link=null)
{
global $g5;
if(!$link)
$link = $g5['connect_db'];
// Blind SQL Injection 취약점 해결
$sql = trim($sql);
// union의 사용을 허락하지 않습니다.
//$sql = preg_replace("#^select.*from.*union.*#i", "select 1", $sql);
$sql = preg_replace("#^select.*from.*[\s\(]+union[\s\)]+.*#i ", "select 1", $sql);
// `information_schema` DB로의 접근을 허락하지 않습니다.
$sql = preg_replace("#^select.*from.*where.*`?information_schema`?.*#i", "select 1", $sql);
if(function_exists('mysqli_query') && G5_MYSQLI_USE) {
if ($error) {
$result = @mysqli_query($link, $sql) or die("<p>$sql<p>" . mysqli_errno($link) . " : " . mysqli_error($link) . "<p>error file : {$_SERVER['SCRIPT_NAME']}");
} else {
$result = @mysqli_query($link, $sql);
}
} else {
if ($error) {
$result = @mysql_query($sql, $link) or die("<p>$sql<p>" . mysql_errno() . " : " . mysql_error() . "<p>error file : {$_SERVER['SCRIPT_NAME']}");
} else {
$result = @mysql_query($sql, $link);
}
}
return $result;
}
!-->
mysql_query 을 sql_query 로 변경하는건 어떨까요?
그누보드 함수인 sql_query 로 변경하는것이 더 편리할듯 싶네요
그누보드 lib/common.lib.php 파일에 mysql_query 로 검색해보세요.
쿼리 관련 함수들이 있습니다. php5.3 및 7에서 잘돌아가게 코딩되어 있으니 참고해서
qpass 라는 프로그램을 쿼리 관련 부분 수정해 보세요.
도움주셔서 매우 감사합니다.
덕분에 설치를 완료하였으며, 항상 좋은일만 가득하시길 바랍니다.