원래 사이트에서 로컬로 파일 이동하고나서 사이트 들어가니 이런 메시지가 나와요
본문
Fatal error: Cannot redeclare array_map_deep() (previously declared
in C:\xampp\htdocs\g1\common.php:54) in
C:\xampp\htdocs\g1\lib\common.lib.php on line 26
이런 메시지가 나와서
이 파일의 26번째 줄 보면 소스가 이렇게 적혀 있는데
뭐가 문제 있는거죠?
$str .= '<a href="'.$url.'1'.$add.'" class="pg_page pg_start">처음</a>'.PHP_EOL;
그리고 db 콘피그 파일 SQL 사이트 주소 등 정보는 수정 했어요
원래 사이트 FTP에서 데이타 폴더에서 파일 몇개 안옴겨진게 있는데
그게 문제가 있는걸까요?
답변 2
방금 파일 다시 실행해보니 위에 소스가 더 늘어났네요.. 56번째 줄에 저게 있고
25 26번째 줄에
return $array;
}
이게 있어요
<?php
if (!defined('_GNUBOARD_')) exit;
/*************************************************************************
**
** 일반 함수 모음
**
*************************************************************************/
// multi-dimensional array에 사용자지정 함수적용
function array_map_deep($fn, $array)
{
if(is_array($array)) {
foreach($array as $key => $value) {
if(is_array($value)) {
$array[$key] = array_map_deep($fn, $value);
} else {
$array[$key] = call_user_func($fn, $value);
}
}
} else {
$array = call_user_func($fn, $array);
}
return $array;
}
// SQL Injection 대응 문자열 필터링
function sql_escape_string($str)
{
$pattern = '/(and|or).*(union|select|insert|update|delete|from|where|limit|create|drop).*/i';
$replace = '';
$str = preg_replace($pattern, $replace, $str);
$str = call_user_func(G5_ESCAPE_FUNCTION, $str);
return $str;
}
// 마이크로 타임을 얻어 계산 형식으로 만듦
function get_microtime()
{
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
// 한페이지에 보여줄 행, 현재페이지, 총페이지수, URL
function get_paging($write_pages, $cur_page, $total_page, $url, $add="")
{
//$url = preg_replace('#&page=[0-9]*(&page=)$#', '$1', $url);
$url = preg_replace('#&page=[0-9]*#', '', $url) . '&page=';
$str = '';
if ($cur_page > 1) {
$str .= '<a href="'.$url.'1'.$add.'" class="pg_page pg_start">처음</a>'.PHP_EOL;
array_map_deep() 함수가 중복으로 즉 같은 함수가 두번 설정되어있다는 말입니다만
common.lib.php 26번행에 그런 함수가 들어있을 턱이없습니다
그누코드가 그렇게되어있다면 누구에게나 같은 에러가 나와야할테죠
common.lib.php를 최신버전으로 덮으쓰기 해보세요