Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Проблемы с перекодировкой данных из MYSQL (http://forum.oszone.net/showthread.php?t=58157)

Di_Mon 16-12-2005 15:40 383818

Проблемы с перекодировкой данных из MYSQL
 
Мне дали готовый сайт + дамп базы который успешно работает, размещен в инете.

Но когда я поставил его у себя дома, начала выдаватся ошибка 500. Проблема в файле .htaccess, а конкретно с этими строчками:

Цитата:

RewriteEngine On

RewriteBase /

RewriteRule ^([a-z]{2})/?$ index.php?LANGUAGE=$1 [L]
RewriteRule ^([a-z]{2})/([a-zA-Z_/-]+)/$ index.php?LANGUAGE=$1&cat=$2 [L]
RewriteRule ^([a-z]{2})/([a-zA-Z_/-]+)/(.+)/$ index.php?LANGUAGE=$1&cat=$2&page=$3 [L]
RewriteRule ^([a-z]{2})/([a-zA-Z_/-]+)/([0-9]{4})/([0-9]{2})/([0-9]{2})/(.+)/$ index.php?LANGUAGE=$1&cat=$2&nyear=$3&nmonth=$4&ndate=$5&page=$6 [L]
RewriteRule ^([a-z]{2})/([a-zA-Z_/-]+)/([0-9]{4})/([0-9]{2})/([0-9]{2})/(.+)\.html index.php?LANGUAGE=$1&cat=$2&nyear=$3&nmonth=$4&ndate=$5&eid=$6 [L]
RewriteRule ^([a-z]{2})/([a-z_/-]+)\.html index.php?LANGUAGE=$1&cat=$2 [L]
#RewriteRule ^([a-z]{2})/([a-z_/-]+)/(.+)\.html index.php?LANGUAGE=$1&cat=$2&page=$3 [L]
#RewriteRule ^([a-z]{2})/([a-zA-Z_/-]+)/\.html? index.php?LANGUAGE=$1&cat=$2 [L]
#RewriteRule ^([a-z]{2})/([a-zA-Z_/-]+)/$ index.php?LANGUAGE=$1&cat=$2 [L]
Файл убал, но после этого данные из базы вставляются в страничку знаками вопроса :(

Подскажите плз, что это за директивы, и как заставить апач их разуметь :)

Igor_I 16-12-2005 20:06 383879

С Rewrite я не знаком, но по ходу в сайте есть переменная LANGUAGE и вот отсутсвие ее приводит к таким последствиям. Лучше бы ты разобрался с ошибкой 500. Посмотри лог веб-сервера.

Di_Mon 17-12-2005 13:25 384065

Invalid command 'RewriteEngine', perhaps mis-spelled or defined by a module not included in the server configuration, referer: http://site/

Вот такая вот ошибочка :)

Di_Mon 17-12-2005 13:44 384069

В httpd.conf расскоментировал такую строчку:

Код:

LoadModule rewrite_module modules/mod_rewrite.so
Теперь ругается и выдает 403 ошибку :(

Это логи:

Цитата:

Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: E:/My Documents/My Website/site/site1/, referer: http://site/

benya 17-12-2005 15:53 384113

А у вас включен контроль директив из .htaccess??? В виндовс при установке апача они по умалчанию запрещены. Поправьте в httpd.conf строчку AllowOverride All
И будет Вам счастье. Кажется так.

mar 17-12-2005 16:00 384118

во-первых, скрорей всего benya прав.
во-вторых, ежели русским языком сказано
Цитата:

Options FollowSymLinks or SymLinksIfOwnerMatch is off
, что вызывает и так далее по тексту, так включите их (хотя не очень понимаю, как это Вам поможет под win :[ )

Di_Mon 19-12-2005 02:25 384509

Подправил httpd.conf - теперь все директивы в .htaccess Апвач понимает, но проблема с кодировкой не ушла :( В чем проблема может быть?

mar 19-12-2005 11:17 384592

Di_Mon
хорошо. несколько вопросов:
- в какой кодировке база (можно проверить через phpmyadmin)
- в какой кодировке выходят страницы сайта?
- какие значения получает переменная LANGUAGE в GET-запрсах (url из дериктивы .htaccess)?
- не стоит ли какой-нибудь дефолтной кодировки апача?

Igor_I 19-12-2005 19:48 384792

Di_Mon
Без обид, но по-моему mar задала слишком мудренные вопросы :)
если немного попонятнее
1 скриншот базы в phpmyadmin
2 charset=??? на странице исходного кода в броузере
3
4 а вот здесь у меня косяк, не нашел я где ставится дефолтная кодировка, только AddCharset - штук 6

Хотя на самом деле - какая версия базы, если MySQL 4.1.* то http://phpclub.ru/faq/wakka.php?wakka=Mysql41Rus

Di_Mon 19-12-2005 20:56 384815

Цитата:

Без обид, но по-моему mar задала слишком мудренные вопросы
Igor_I ну, ты меня недооцениваешь! :D

Версия MySQL 4.1.14-nt

Кодировки перепробЫвал все! Сейчас Значения такие

<quote>
Переменная Значение сессии Глобальное значение
character set client utf8 cp1251
character set connection cp1251 cp1251
character set database cp1251 cp1251
character set results utf8 cp1251
character set server cp1251 cp1251
character set system utf8 utf8 </quote>

Кодировка странички charset=windows-1251

Цитата:

какие значения получает переменная LANGUAGE в GET-запрсах (url из дериктивы .htaccess)?
Вот это поподробнее. Как я понимаю речь про ПХП?

И некоторые директивы из httpd.conf

Код:


DefaultLanguage ru
...
AddLanguage ru .ru
...
LanguagePriority ru ua en...
...
AddCharset WINDOWS-1251 .cp-1251  .win-1251
AddCharset CP866      .cp866
AddCharset KOI8-r      .koi8-r .koi8-ru
AddCharset KOI8-ru    .koi8-uk .ua
AddCharset ISO-10646-UCS-2 .ucs2
AddCharset ISO-10646-UCS-4 .ucs4
AddCharset UTF-8      .utf8


Igor_I 19-12-2005 23:16 384857

Цитата:

Igor_I ну, ты меня недооцениваешь! :D
Ну извини :)
Ссылку читал?

Di_Mon 20-12-2005 20:57 385199

Читал. Наиболее перспективным показался этот путь:

Цитата:

Заставить My SQL автоматом выполнять этот запрос при каждом коннекте к нему. Для этого нужно в файле my.cnf/my.ini (где их искать — в документацию) в раздел [server] добавить следующую строку: init-connect="SET NAMES кодировка"

Однако, следует заметить, что это НЕ будет работать, если пользователь, которым вы подключаетесь к базе имеет привилегию SUPER (а стандартный пользователь root к таким относится, так же как и все созданные через «GRANT ALL PRIVILEGES ON *.* TO ...»). Это сделано для того, чтобы в случае ошибки в этом запросе (а его можно изменить во время работы), хоть кто-то мог подключиться к базе и исправить его.

Внимание! Функция mysqli_client_encoding() и сотоварищи, отображает кодировку клиента на момент соединения и не меняют возвращаемое значение в процессе работы. Поэтому не стоит кричать, что кодировка не меняется. Просто делайте что говорят и смотрите результат работы скрипта. Получить нужное значение можно SQL-запросом “SHOW VARIABLES LIKE 'character_set_client'".
В # SERVER SECTION
Вставил вот эту строчку
init-connect="SET NAMES cp1251"

Но проблему это не решило. Видимо из за root

Скриптов очень много да и не силен я в ПХП :)

Подскажите что б еще попробывать :sorry:

vadimiron 20-12-2005 21:35 385210

Цитата:

Видимо из за root
А вы не пользуйтесь базой данных под root-ом, создайте юзера с правами на чтение и запись в базу, всё остальное всё равно не нужно, и тогда используйте эту строчку в ини-файле, у меня тоже самое было и теперь всё работает

Igor_I 20-12-2005 21:55 385216

Цитата:

Видимо из за root
Действительно, это же дыра, черт знает каких размеров. :)

Di_Mon 20-12-2005 22:16 385225

Кстати, phpMyAdmin показывает что есть проблемы:

Код:

Директива $cfg['PmaAbsoluteUri'] должна быть установлена в Вашем конфигурационном файле!
Код:

The mbstring PHP extension was not found and you seem to be using multibyte charset. Without mbstring extension phpMyAdmin is unable to split strings correctly and it may result in unexpected results.
Как это безобразие исправить?

vadimiron 20-12-2005 23:51 385243

Активировать это самое расширение в php.ini и проконтролировать, лежит ли файл данного расширения в папке расширений PHP


Время: 00:00.

Время: 00:00.
© OSzone.net 2001-