코드이그나이터 기반 PHP 오픈소스 게시판 : 씨아이보드

system 디렉토리 내의 파일 수정

  • 어드민
  • 1
  • 5,456
  • 글주소
  • 08-10
system 디렉토리는 core 를 담당하는 부분이기 때문에 가능하면 수정하지 않을 것을 권장합니다.
 
씨아이보드 배포판도 system 디렉토리를 절대 수정하지 않는 방향으로 시작을 했었습니다.
 
그런데 실제 몇군데의 호스팅 서버에 설치를 하다보니, 하나의 문제점이 발견되어 수정을 하지 않을수가 없었습니다.
 
현재 씨아이보드 배포판은 CodeIgniter 3.0.0 을 기준으로 만들어졌으며 하나의 system 파일이 수정되었습니다.
 
수정된 파일은 system/librarues/Session/drivers/Session_files_driver.php 입니다.
 
CodeIgniter 원본 
[code]
public function __construct(&$params)
{
parent::__construct($params);

if (isset($this->_config['save_path']))
{
$this->_config['save_path'] = rtrim($this->_config['save_path'], '/\\');
ini_set('session.save_path', $this->_config['save_path']);
}
else
{
$this->_config['save_path'] = rtrim(ini_get('session.save_path'), '/\\');
}
}
[/code]
 
씨아이보드 수정본
[code]
public function __construct(&$params)
{
parent::__construct($params);

if (isset($this->_config['save_path']))
{
$this->_config['save_path'] = rtrim($this->_config['save_path'], '/\\');
ini_set('session.save_path', $this->_config['save_path']);
}
else
{
$this->_config['save_path'] = rtrim(ini_get('session.save_path'), '/\\');
if( ! $this->_config['save_path'])
{
$this->_config['save_path'] = '/tmp';
ini_set('session.save_path', $this->_config['save_path']);
}
}
}
[/code]
 
이렇게 수정한 이유는 호스팅 서버에 따라 ini_get('session.save_path')​ 의 값을 리턴하지 않는 경우를 발견하였기 때문입니다. ini_get('session.save_path') 의 값이 리턴되지 않는 경우 /tmp 디렉토리를 session.save_path 로 인식되게 변경하였습니다.
 
application/config/config.ph 에서 $config['sess_save_path']​ 의 값을 변경하여 save_path 를 원하는 위치에 지정하실 수도 있습니다.​
 
감사합니다.