Beste Tweakers,
Ik onderhoud al een lange tijd een aantal websites in gehost op Apache/Linux en gebaseerd op PHP / MySQL. Een kleine maand geleden zijn we van hosting provider gewisseld en sindsdien zijn de problemen ontstaan.
Er is duidelijk een character set probleem maar ik krijg het niet opgelost. Ik heb me al suf gezocht en onder andere en aantal GoT Topics doorgenomen en tips op deze websites doorgelezen : Linkje1 Linkje2
Wat zijn de symptomen:
- Tekens in phpMyAdmin worden correct getoond (PHPMyAdmin instelling English - UTF8)
- Tekens in phpMyAdmin worden in enkele tabellen foutief getoond
- Tekens in resultaten van queries via mysql command line worden correct getoond
- Wanneer ik een webpagina maak die bvb een gebruiker opzoekt in een tabel op basis van emailadres, dan werkt deze correct behalve wanneer er speciale karakters in één van de velden staan die moeten worden geretourneerd. Dan krijg ik in m'n apache error log het volgende:
- Ik zie veel de volgende fout in apache error log, maar weet niet of het hieraan gerelateerd is
- ik maak gebruik van PHPExcel om exports te maken naar Excel. Records met speciale tekens ontbreken en in de apache error log krijg ik de volgende regel:
Alle tabellen/velden hebben collation 'latin1_swedish_ci', zowel voor de database op de oude webhost als op de nieuwe webhost.
Zowel de nieuwe als de oude webhost hebben de volgende instellingen m.b.t. charsets:
Wanneer ik dezelfde query uitvoer in een PHP script krijg ik dezelfde instellingen terug.
De nieuwe webhost: Server version: 5.0.51a-24+lenny4 (Debian)
De oude webhost: Server version: 5.0.45-Debian_1ubuntu3.4-log Debian etch distribution
Het overzetten van de database heb ik als volgt uitgevoerd:
- export met mysqldump -u xxxx -p per database
- dumpfile bewerkt en het commando USE Database; toegevoegd. Hier weet ik echter niet meer juist of ik deze aanpassing via nano op linux heb uitgevoerd of via een text editor onder windows.
- import met mysql -u xxxx -p < dumpfile.sql
Nog een duidelijk verschil is dat op de nieuwe webhost Apache geconfigureerd is via fastcgi, de oude host was een klassieke apache + PHP configuratie.
Ik vermoed zelf dat het een probleem is met FastCGI of een character set instelling die toch ergens mis is, maar ik kan het probleem niet vinden. Weet iemand raad?
Ik onderhoud al een lange tijd een aantal websites in gehost op Apache/Linux en gebaseerd op PHP / MySQL. Een kleine maand geleden zijn we van hosting provider gewisseld en sindsdien zijn de problemen ontstaan.
Er is duidelijk een character set probleem maar ik krijg het niet opgelost. Ik heb me al suf gezocht en onder andere en aantal GoT Topics doorgenomen en tips op deze websites doorgelezen : Linkje1 Linkje2
Wat zijn de symptomen:
- Tekens in phpMyAdmin worden correct getoond (PHPMyAdmin instelling English - UTF8)
- Tekens in phpMyAdmin worden in enkele tabellen foutief getoond
- Tekens in resultaten van queries via mysql command line worden correct getoond
- Wanneer ik een webpagina maak die bvb een gebruiker opzoekt in een tabel op basis van emailadres, dan werkt deze correct behalve wanneer er speciale karakters in één van de velden staan die moeten worden geretourneerd. Dan krijg ik in m'n apache error log het volgende:
- Ik zie veel de volgende fout in apache error log, maar weet niet of het hieraan gerelateerd is
code:
1
| [warn] (103)Software caused connection abort: mod_fcgid: ap_pass_brigade failed in handle_request function |
- ik maak gebruik van PHPExcel om exports te maken naar Excel. Records met speciale tekens ontbreken en in de apache error log krijg ik de volgende regel:
code:
1
| PHP Notice: iconv_substr(): Detected an illegal character in input string in PHPExcel/Shared/String.php on line 561 |
Alle tabellen/velden hebben collation 'latin1_swedish_ci', zowel voor de database op de oude webhost als op de nieuwe webhost.
Zowel de nieuwe als de oude webhost hebben de volgende instellingen m.b.t. charsets:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| mysql> show variables LIKE '%char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec) |
Wanneer ik dezelfde query uitvoer in een PHP script krijg ik dezelfde instellingen terug.
De nieuwe webhost: Server version: 5.0.51a-24+lenny4 (Debian)
De oude webhost: Server version: 5.0.45-Debian_1ubuntu3.4-log Debian etch distribution
Het overzetten van de database heb ik als volgt uitgevoerd:
- export met mysqldump -u xxxx -p per database
- dumpfile bewerkt en het commando USE Database; toegevoegd. Hier weet ik echter niet meer juist of ik deze aanpassing via nano op linux heb uitgevoerd of via een text editor onder windows.
- import met mysql -u xxxx -p < dumpfile.sql
Nog een duidelijk verschil is dat op de nieuwe webhost Apache geconfigureerd is via fastcgi, de oude host was een klassieke apache + PHP configuratie.
Ik vermoed zelf dat het een probleem is met FastCGI of een character set instelling die toch ergens mis is, maar ik kan het probleem niet vinden. Weet iemand raad?
[ Voor 3% gewijzigd door Robbeke op 19-10-2010 12:38 . Reden: aanpassen informatie na aantal tests ]
http://www.tweakers.net/gallery/sys/2314