Witam, napisałem skrypt który ma zapisywać plik log.
$error_message=array
(
"database_server_connection" => "Brak połączenia z serwerem baz danych. ",
"database_connection" => "Brak połączenia z bazą danych. ",
);
function get_ip_address($ip2long = true)
{
if($_SERVER['HTTP_CLIENT_IP']) $ip = $_SERVER['HTTP_CLIENT_IP'];
else if($_SERVER['HTTP_X_FORWARDED_FOR']) $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
else $ip = $_SERVER['REMOTE_ADDR'];
return $ip;
}
function save_to_log($string, $file_name)
{
$local_date=date("d.m.Y G:i:s ");
$file=fopen($file_name."error.log", "a");
if($file) fputs($file,$local_date.get_ip_address().": ".$string."\n");
fclose($file);
}
Gdy nie mogę połączyć się z bazą danych uruchamiam ten skrypt takim wywołaniem:
save_to_log($error_message['database_server_connection'].mysql_error(),$xml_config->directory->log);
i w tym wypadku plik zapisuje mi się w formacie ascii i pojawiają się krzaczki, natomiast gdy wywołam go w taki sposób:
save_to_log($error_message['database_connection'].mysql_error(),$xml_config->directory->log);
log zapisuje się zakodowany w utf-8 i krzaczków nie ma, możecie mi powiedzieć czy to wina kodu czy serwera?
Plik log wygląda tak:
14.11.2013 19:17:04 127.0.0.1: Brak poĹ‚Ä…czenia z serwerem baz danych. Nie można nawiązać połączenia, ponieważ komputer docelowy aktywnie go odmawia.
14.11.2013 19:17:05 127.0.0.1: Brak poĹ‚Ä…czenia z serwerem baz danych. Nie można nawiązać połączenia, ponieważ komputer docelowy aktywnie go odmawia.
14.11.2013 19:17:16 127.0.0.1: Brak poĹ‚Ä…czenia z serwerem baz danych. Nie można nawiązać połączenia, ponieważ komputer docelowy aktywnie go odmawia.
14.11.2013 19:17:34 127.0.0.1: Brak poĹ‚Ä…czenia z serwerem baz danych. Nie można nawiązać połączenia, ponieważ komputer docelowy aktywnie go odmawia.
14.11.2013 19:18:46 127.0.0.1: Brak poĹ‚Ä…czenia z serwerem baz danych. Nie można nawiązać połączenia, ponieważ komputer docelowy aktywnie go odmawia.
Zlokalizowałem błąd, coś nie działa w tablicy asocjacyjne error_message, czy da się coś zrobić aby mogła ona przechowywać string utf-8?
Przeniosłem komunikaty o błędach(tablicę error message) do pliku xml i dalej jest to samo.
Jeśli najpierw wystąpi wywołam:
save_to_log($error_message['database_connection'].mysql_error(),$xml_config->directory->log);
to plik jest zapisany w utf-8 i polskie znaki wyświetlają się bez problemu, jeśli potem wywołam:
save_to_log($error_message['database_server_connection'].mysql_error(),$xml_config->directory->log);
to plik konwertuje się na ascii i pojawiają się krzaczki, czy to wina serwera czy kodu?