2012-11-15 13 views
7

Mam projekt w Symfony2, który działa dobrze na moim localhost, ale po przeniesieniu go na serwer zewnętrzny problem już się rozpoczął.Zestaw znaków Symfony2 dla parametrów zapytania

  1. nie widzę żadnych wyników nazwisk z bazy danych zawierającej polskie znaki
  2. W Profiler Sprawdziłem zapytania:
    • sekcja „parametry” ma poprawną charset
    • runnable „zapytanie” ma takie same parametry ale ze złych charset

na przykład:

(...) WHERE ((((c1_.name LIKE '%Å�%') OR (c3_.name LIKE '%Å�%') OR (..) Parameters: ['%ś%', '%ś%', (...)]

Wszystkie tabele bazy danych ma charset = utf8_unicode_ci.

W config.yml mogę ustawić

doctrine: 
    dbal: 
     charset: UTF8 

ramy Ustawianie charset nie działa.

Test /config.php mówi:

RECOMMENDATIONS: 
    1. Install and enable a PHP accelerator like APC (highly recommended). 
    2. Set short_open_tag to off in php.ini*. 
    3. Set magic_quotes_gpc to off in php.ini*. 
    * Changes to the php.ini file must be done in "/usr/local/php/php.ini". 

Ale niestety nie mam dostępu do php.ini na tym serwerze. Czy to możliwe magic_quotes_gpc spowodowało ten problem? Nie mam również dostępu do linii poleceń, więc dodałem projekt (bazę danych, system plików, dostawców) za pośrednictwem ftp i phpmyadmin.

Ponieważ nie mam problemu na moim lokalnym hoście, domyślam się, że to jest problem z konfiguracją serwera i nie mam do tego dostępu, jedynym sposobem, jaki widzę, jest próba zmiany konfiguracji zestawu znaków w QueryBuilder. Gdzie mogę to zrobić? Czy wiesz, co jeszcze może spowodować ten problem?

Dzięki

+0

Czy porównałeś phpinfo(); na obu serwerach? Inaczej, czy twój zewnętrzny serwer sieciowy pracuje z utf-8? (AddDefaultCharset UTF-8, php_value domyślny_charset "UTF-8" wewnątrz htaccess) – sglessard

+0

Ustawiłem zestaw znaków UTF8 tak jak powiedziałeś i porównałem pola phpinfos z zestawami znaków. Są takie same, ale problem nadal istnieje. Czytałem, że ten serwer działa domyślnie latin2, więc próbowałem zmienić wszystko na latin2, ale to nie pomogło. Próbuję znaleźć miejsce/funkcję, która zastąpi "?" znaki z elementami z tablicy parametrów. Czy to jest zadanie PDOStatment? Jak mogę sprawdzić, co dzieje się tam krok po kroku? – user1826876

Odpowiedz

9

Znaleziono rozwiązanie: Aby ustawić "Ustaw nazwy utf8" Zmieniłem mój doktryna config

doctrine: 
    dbal: 
      driver: %database_driver% 
      host:  %database_host% 
      port:  %database_port% 
      dbname: %database_name% 
      user:  %database_user% 
      password: %database_password% 
      charset: UTF8 
      options: 
      1002: "SET NAMES 'UTF8'" 

To działa dobrze teraz.

Powiązane problemy