IP.Board na innym porcie MySQL
Patrząc na problemy z jakimi ostatnio borykają się niektórzy użytkownicy IP.Board postanowiłem napisać ten tutorialek
Mianowicie chodzi o problem z połączeniem do bazy danych na innym porcie niż standardowy. Problemy takie możemy zaobserwować np. na serwerach nazwa.pl na nowej wersji bazy MySQL 5 dostępnej na porcie 3305. Przejdźmy zatem od razu do czynów:
Otwórz plik: /conf_global.php
Znajdź:
$INFO['sql_host'] = 'serwer_bazy_danych';
dodaj poniżej:
$INFO['sql_port'] = 'port_na_jakim_dziala_baza';
Zapisz zmiany i wgraj plik.
Otwórz: /sources/ipsclass.php
Znajdź:
# Debug log - Don't use this on a production board!
$this->DB->obj['debug_log'] = ROOT_PATH . 'cache/sql_debug_log_'.date('m_d_y').'.cgi';
$this->DB->obj['use_debug_log'] = 0;
Dodaj poniżej:
if( !empty( $this->vars['sql_port'] ) )
{
if ( extension_loaded('mysqli') AND ! defined( 'FORCE_MYSQL_ONLY' ) )
{
$this->DB->obj['sql_port'] = $this->vars['sql_port'];
}
else
{
$this->DB->obj['sql_host'] = "{$this->DB->obj['sql_host']}:{$this->vars['sql_port']}";
}
}
Zapisz zmiany i wgraj plik.
Otwórz plik: /ips_kernel/class_db_mysql_client.php
Znajdź:
$this->connection_id = @mysql_pconnect( $this->obj['sql_host'] , $this->obj['sql_user'] , $this->obj['sql_pass'] , $this->obj['force_new_connection'] );
Zamień na:
if( !empty($this->obj['sql_port'] ) )
{
$this->connection_id = @mysql_pconnect( $this->obj['sql_host'] .':' .$this->obj['sql_port'] ,
$this->obj['sql_user'] ,
$this->obj['sql_pass'] ,
$this->obj['force_new_connection']
);
}
else
{
$this->connection_id = @mysql_pconnect( $this->obj['sql_host'] ,
$this->obj['sql_user'] ,
$this->obj['sql_pass'] ,
$this->obj['force_new_connection']
);
}
Zapisz zmiany i wgraj plik.
To już wszystkie zmiany. Od teraz wszystko już będzie działać tak jak należy :-)