php업데이트 후 에러 현상.. 정보
php업데이트 후 에러 현상..
본문
며칠 전 서버를 아파치 1.3. 시리즈 최신버전의 1.3.35 및 mod_ssl 2.8.26 및 php 4.4.2 최신으로 업데이트 하고 나서 다음과 같은 에러 메시지가 뜨네요..
아마 업데이트 때문인것 같습니다.
다른 사이트들은 괜찮은데, 이놈만 에러가 납니다..
고수들께서 수정방법을 알려주시기 바랍니다..
http://www.tmkey.com
Warning: session_set_save_handler(): Argument 2 is not a valid callback in /usr/local/sites/tmkey/html/lib/session_handler.php on line 64
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /usr/local/sites/tmkey/html/lib/session_handler.php:64) in /usr/local/sites/tmkey/html/lib/session_handler.php on line 70
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /usr/local/sites/tmkey/html/lib/session_handler.php:64) in /usr/local/sites/tmkey/html/lib/session_handler.php on line 70
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /usr/local/sites/tmkey/html/lib/session_handler.php:64) in /usr/local/sites/tmkey/html/lib/session_handler.php on line 70
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /usr/local/sites/tmkey/html/lib/session_handler.php:64) in /usr/local/sites/tmkey/html/lib/session_handler.php on line 70
댓글 전체
session_handler.php 를 쓰시는군요.
gnu4에서는 특별히 지정하지 않고 쓰는 것으로 알고 있는데
추가하신 건가요?
gnu4에서는 특별히 지정하지 않고 쓰는 것으로 알고 있는데
추가하신 건가요?

그누가 아닙니다. 꽤 오래전에 프로그램만 외주줬던 겁니다.
session_handler.php입니다.
--------------------------------------------------------------
<?
if(!$conn) include $DBConnectFile;
//$sess_maxlifetime = get_cfg_var("session.gc_maxlifetime");
$sess_maxlifetime = 3600;
function sess_open ($save_path, $session_name) {
return(true);
}
function sess_read($sid) {
global $conn;
$query = "Select value From sessions Where sid = '$sid' AND expiry > " . time();
$qid = mysql_query($query, $conn);
if (list($value) = mysql_fetch_row($qid)) {
return $value;
}
else return "";
//return false;
}
function sess_write($sid, $val) {
global $conn, $sess_maxlifetime, $XGlobalUserID, $REMOTE_ADDR;
$expiry = time() + $sess_maxlifetime;
$value = addslashes($val);
$query = "Select count(sid) From sessions Where sid='$sid'";
$qid = mysql_query($query, $conn);
if(@mysql_result($qid, 0, 0))
{
//$query = "Update sessions Set expiry = $expiry, value = '$value' Where sid = '$sid' AND expiry > " . time();
$query = "Update sessions Set expiry=$expiry, value='$value', user_id='$XGlobalUserID', remote_addr='$REMOTE_ADDR' Where sid = '$sid'";
$qid = mysql_query($query, $conn);
}
else{
$query = "Insert into sessions (sid, expiry, value, user_id, remote_addr) values ('$sid', $expiry, '$value', '$XGlobalUserID', '$REMOTE_ADDR')";
$qid = mysql_query($query, $conn);
}
return $qid;
}
function sess_destroy($sid) {
global $conn;
$query = "Delete From sessions Where sid = '$sid'";
$qid = mysql_query($query, $conn);
return $qid;
}
function sess_gc($maxlifetime) {
global $conn;
$query = "Delete From sessions Where expiry < " . time();
$qid = mysql_query($query, $conn);
$ret=mysql_affected_rows($conn);
return $ret;
}
session_set_save_handler("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc");
//session_set_cookie_params(0, "", ".isitem.co.kr");
//if($HTTP_COOKIE_VARS[XcSessionID]) session_id($HTTP_COOKIE_VARS[XcSessionID]);
session_start();
//session_unset();
//$CookieInfo = session_get_cookie_params();
//echo "lifetime:" . date("Y-m-d", $CookieInfo[lifetime]) . " <br> path: $CookieInfo[path] <br>" . "domain:$CookieInfo[domain]<br>". "secure:$CookieInfo[secure]<br>" . get_cfg_var("session.gc_maxlifetime") . "<br>session_id:" . session_id() . "<br>";
?>
session_handler.php입니다.
--------------------------------------------------------------
<?
if(!$conn) include $DBConnectFile;
//$sess_maxlifetime = get_cfg_var("session.gc_maxlifetime");
$sess_maxlifetime = 3600;
function sess_open ($save_path, $session_name) {
return(true);
}
function sess_read($sid) {
global $conn;
$query = "Select value From sessions Where sid = '$sid' AND expiry > " . time();
$qid = mysql_query($query, $conn);
if (list($value) = mysql_fetch_row($qid)) {
return $value;
}
else return "";
//return false;
}
function sess_write($sid, $val) {
global $conn, $sess_maxlifetime, $XGlobalUserID, $REMOTE_ADDR;
$expiry = time() + $sess_maxlifetime;
$value = addslashes($val);
$query = "Select count(sid) From sessions Where sid='$sid'";
$qid = mysql_query($query, $conn);
if(@mysql_result($qid, 0, 0))
{
//$query = "Update sessions Set expiry = $expiry, value = '$value' Where sid = '$sid' AND expiry > " . time();
$query = "Update sessions Set expiry=$expiry, value='$value', user_id='$XGlobalUserID', remote_addr='$REMOTE_ADDR' Where sid = '$sid'";
$qid = mysql_query($query, $conn);
}
else{
$query = "Insert into sessions (sid, expiry, value, user_id, remote_addr) values ('$sid', $expiry, '$value', '$XGlobalUserID', '$REMOTE_ADDR')";
$qid = mysql_query($query, $conn);
}
return $qid;
}
function sess_destroy($sid) {
global $conn;
$query = "Delete From sessions Where sid = '$sid'";
$qid = mysql_query($query, $conn);
return $qid;
}
function sess_gc($maxlifetime) {
global $conn;
$query = "Delete From sessions Where expiry < " . time();
$qid = mysql_query($query, $conn);
$ret=mysql_affected_rows($conn);
return $ret;
}
session_set_save_handler("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc");
//session_set_cookie_params(0, "", ".isitem.co.kr");
//if($HTTP_COOKIE_VARS[XcSessionID]) session_id($HTTP_COOKIE_VARS[XcSessionID]);
session_start();
//session_unset();
//$CookieInfo = session_get_cookie_params();
//echo "lifetime:" . date("Y-m-d", $CookieInfo[lifetime]) . " <br> path: $CookieInfo[path] <br>" . "domain:$CookieInfo[domain]<br>". "secure:$CookieInfo[secure]<br>" . get_cfg_var("session.gc_maxlifetime") . "<br>session_id:" . session_id() . "<br>";
?>
역시나 세션 정보를 디비에 저장하는 거군요.
session_set_save_handler("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc");
에서 보면
function sess_open ()
function sess_read()
는 있는데
sess_close()가 없네요.
function sess_close ($save_path, $session_name) {
return(true);
}
정도면 될 듯 합니다. open에서 하는 일이 없으니 close()도 없어도 되겠죠.
에서 보면
function sess_open ()
function sess_read()
는 있는데
sess_close()가 없네요.
function sess_close ($save_path, $session_name) {
return(true);
}
정도면 될 듯 합니다. open에서 하는 일이 없으니 close()도 없어도 되겠죠.

function sess_close ($save_path, $session_name) {
return(true);
}
위 부분을 추가했더니 추가한 부분에 대한 에러 메시지가 나옵니다..
Warning: Missing argument 1 for sess_close() in /usr/local/sites/tmkey/html/lib/session_handler.php on line 11
Warning: Missing argument 2 for sess_close() in /usr/local/sites/tmkey/html/lib/session_handler.php on line 11
return(true);
}
위 부분을 추가했더니 추가한 부분에 대한 에러 메시지가 나옵니다..
Warning: Missing argument 1 for sess_close() in /usr/local/sites/tmkey/html/lib/session_handler.php on line 11
Warning: Missing argument 2 for sess_close() in /usr/local/sites/tmkey/html/lib/session_handler.php on line 11
죄송합니다. ctrl-C, ctrl-V했더니만......
function sess_close()
{
return(true);
}
로 해 주세요.
function sess_close()
{
return(true);
}
로 해 주세요.

감사합니다...
적용하니 바로 해결됐습니다..
rolo님,
이른 시간이데도 수고가 많으십니다..^^
적용하니 바로 해결됐습니다..
rolo님,
이른 시간이데도 수고가 많으십니다..^^
이런......