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 :-)