PHP5 + Mysql 5 Türkçe Karakter Problemi
2005-12-22 11:15:43
PHP5 + MYSQL 5 ikilisinin kurulu olduğu bir sunucuda şu şekilde bir sorun ile karşılaşmıştım. Bu problemi linux listelerindeki arkadaşlara da sordum ve saolsunlar yardımcı oldular. Bende şimdi sizlerle paylaşmak istedim.
Site üzerinden mysql 'den veri çeken php dosyasını çağırdığımda Türkçe karakterler ? şeklinde gözüküyordu. Bunun bir çok nedeni olabilirdi başlangıçta. Mysql 'i latin5 charset ile başlatmak sorunu çözebilirdi ama yetmedi. Daha sonra bu problemin mysql in bir bug 'ı olduğunu ve mysql i çalıştırırken verilen bir parametre ile bunun düzeltilebildiğini öğrendim. Doğruymuş:)

/etc/my.cnf dosyamı şu şekilde düzenledim:

[root@~~]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
#socket=/var/lib/mysql/mysql.sock
default-character-set=latin5
#character-sets-dir=/usr/share/mysql/charsets
#default-collation=latin5_turkish_ci
max_connections = 400

[mysql.server]
user=mysql
default-character-set=latin5

[safe_mysqld]
err-log=/var/log/mysqld.log

[mysql]
default-character-set=latin5

ve bu conf. dosyasına ek olarak mysql sürecini başlatan betiğe aşağıdaki parametre yi de ekliyorsunuz.

--skip-character-set-client-handshake

Bu parametre, varsayılan server karakter setini kullanan ve clientlar tarafından gönderilen karakter set bilgisini yok sayar.

quote:
——————————————————————————–

[mysqld]
skip-locking
key_buffer=16M
join_buffer=1M
record_buffer=1M
sort_buffer=2M
table_cache=1028
max_connections=250
thread_cache_size=286
max_allowed_packet=5M
connect_timeout=15
query_cache_limit=1M
query_cache_size=32M
query_cache_type=1
thread_concurrency=2
wait_timeout=15

——————————————————————————–

httpd.conf user

quote:
——————————————————————————–

Timeout 300
KeepAlive Off
MinSpareServers 7
MaxSpareServers 13
StartServers 7
MaxRequestsPerChild 50

——————————————————————————–