Автор Тема: Mysql, php и apache  (Прочетена 5540 пъти)

luda_glawa

  • Участник
  • *****
  • Публикации: 649
  • Distribution: Kubuntu
  • Window Manager: KDE
    • Профил
    • WWW
Mysql, php и apache
« -: Jan 16, 2007, 13:29 »
Незнам дали съм избрал правилния раздел на форума, ако не, моля да ме извините.

На пръв поглед проблема е банален и разискван много пъти ... ама наистина много, но ...

OS: Fedora Core 5
Kernel v: 2.6.17-1
PHP: 5.1.6 release 1.2
MySQL: 5.0.27 release 1.fc5
Apache: 2.2.2 release 1.2

Прехвърлям малка база данни от машина с дебиан на машина с по-горните версии на софтуерите под федора.

Данните на машината от която прехвърлям базата:
OS: Debian sarge
Kernel v: 2.6.8-2
PHP: 4.4.3
MySQL: 4.1.11
Apache: 2.0.54

При прехвърлянето използвам mysqldump, и данните се записват във файл с utf-8 кодировка. За това съм сигурен защото федората е настроена с utf-8 локал и през MidnightCommander разчитам кирилицата без проблем. Данните се записаха в новата база също без проблем, като през phpmyadmin ги разчитам. А и като направя заявка директно през mysql данните пак се четат. Което според мен означава, че данните са правилно записани в базата. Web сървъра също няма проблем с UTF-8 - страничките които използват тази база са писани с така кодировка и нямам проблем с тях. Но когато настъпи момента да изкарвам в страничка данните от базата ... излизат само въпросителни.
По-надолу съм дал текущите настройки в my.cnf, httpd.conf, php.ini. Навсякъде, мисля където трябва, съм указал, че трябва да се използва utf-8 кодиране на символите. Струва ми се, че объркването настъпва между php-то и резултатите от sql заявките, но как да контролирам и там процеса? Ако може да помоля за помощ, защото ми се изчерпаха идеите.

my.cnf
Цитат

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
character_set_server=utf8
default_character_set=utf8
collation_server=utf8_general_ci

[mysql.server]
user=mysql
basedir=/var/lib

[client]
default_character_set=utf8

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid


httpd.conf
Цитат

...
# Specify a default charset for all content served; this enables
# interpretation of all content as UTF-8 by default.  To use the
# default browser choice (ISO-8859-1), or to allow the META tags
# in HTML content to override this choice, comment out this
# directive:
#
AddDefaultCharset UTF-8

#
...


php.ini
Цитат

...
; As of 4.0b4, PHP always outputs a character encoding by default in
; the Content-type: header.  To disable sending of the charset, simply
; set it to be empty.
;
; PHP's built-in default is text/html
default_mimetype = "text/html"
default_charset = "UTF-8"
...


SHOW VARIABLES LIKE 'char%';
Цитат

mysql> SHOW VARIABLES LIKE 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)


MySQL server status
Цитат

...
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.0.27
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /var/lib/mysql/mysql.sock
Uptime:                 32 min 48 sec
Активен

С Уважение:

Luda Glawa ;-)

kennedy

  • Участник
  • *****
  • Публикации: 2151
  • Николай Колев
    • Профил
Mysql, php и apache
« Отговор #1 -: Jan 16, 2007, 16:25 »
Какъв е точно проблема? Когато пуснеш заявка през пхп-то ти вади маймуни ли?
Активен

"за всичко иде час" Еклесиаст 3:1
всеки пост - отговор на въпрос
-----------------
24.12.2003 "MS Free"

luda_glawa

  • Участник
  • *****
  • Публикации: 649
  • Distribution: Kubuntu
  • Window Manager: KDE
    • Профил
    • WWW
Mysql, php и apache
« Отговор #2 -: Jan 16, 2007, 17:30 »
Цитат (kennedy @ Ян. 16 2007,17:25)
Какъв е точно проблема? Когато пуснеш заявка през пхп-то ти вади маймуни ли?

Само въпросителни.
Активен

С Уважение:

Luda Glawa ;-)

PsYhLo

  • Участник
  • *****
  • Публикации: 83
    • Профил
    • WWW
Mysql, php и apache
« Отговор #3 -: Jan 16, 2007, 19:30 »
Примерен код
<html>
      <head>
            <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />

а това указал ли си го във php/html файловете  '<img'>
Активен

"A computer terminal is not some clunky old television with a
typewriter in front of it. It is an interface where the mind and
body can connect with the universe and move bits of it about."
                            Douglas Adams from Mostly Harmless

luda_glawa

  • Участник
  • *****
  • Публикации: 649
  • Distribution: Kubuntu
  • Window Manager: KDE
    • Профил
    • WWW
Mysql, php и apache
« Отговор #4 -: Jan 16, 2007, 19:38 »
Цитат (PsYhLo @ Ян. 16 2007,20:30)
Примерен код
<html>
      <head>
            <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />

а това указал ли си го във php/html файловете  '<img'>

Да, има го. Само е малко по-различно '<img'>

Цитат

<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
Активен

С Уважение:

Luda Glawa ;-)

senser

  • Участник
  • *****
  • Публикации: 1327
    • Профил
Mysql, php и apache
« Отговор #5 -: Jan 16, 2007, 19:54 »
защо не пробваш с един прост php/html файл с такъв head, който ползваш, за да видиш дали проблема е в апача или в рнр

при мен въпросния таг изглежда ето така:
Примерен код

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>


П.П. ако зададеш изрично енкодинга на utf-8 в баузъра променя ли се нещо



Активен

sunhater

  • Участник
  • *****
  • Публикации: 329
    • Профил
Mysql, php и apache
« Отговор #6 -: Jan 16, 2007, 20:02 »
За php файловете ползвай:
Примерен код
header("Content-Type: text/html; charset=utf-8");

При мен само така става в php-tata.



Активен

CaBA

  • Участник
  • *****
  • Публикации: 303
    • Профил
    • WWW
Mysql, php и apache
« Отговор #7 -: Jan 17, 2007, 01:23 »
Когато дебъгваш такива работи, безценна е приставката  webdeveloper на Firefox. С нея би могъл веднага да видиш какви хедъри изпраща сървъра (Information -> View Response Headers).
Активен

10 години ябълкова диета стигат, стигат!

luda_glawa

  • Участник
  • *****
  • Публикации: 649
  • Distribution: Kubuntu
  • Window Manager: KDE
    • Профил
    • WWW
Mysql, php и apache
« Отговор #8 -: Jan 19, 2007, 16:17 »
Едва днес успях да направя малко тестове.

senser
Цитат

защо не пробваш с един прост php/html файл с такъв head, който ползваш, за да видиш дали проблема е в апача или в рнр

при мен въпросния таг изглежда ето така:

Примерен код

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>


П.П. ако зададеш изрично енкодинга на utf-8 в баузъра променя ли се нещо


Няма разлика с твоя код. Излизат въпросителни. Кирилицата,  от статичния текст, се визуализира правилно само когато браузъра е на UTF-8. Тествах го.

sunhater

Цитат

За php файловете ползвай:

Примерен код

header("Content-Type: text/html; charset=utf-8");


При мен само така става в php-tata.



Няма разлика.

Неприятното е, че в phpmyadmin кирилицата в полетата се вижда. Да не би в php 5 да има нещо което да контролира подаваните от сървъра данни?

Кода с който тествах:

Примерен код

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Редактиране на данни</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<?php
$srvr=mysql_connect('localhost','user','password');
$db=mysql_select_db ('db',$srvr);
$qry=mysql_query("SELECT * FROM table");
?>

<form name="edit" method="POST">

<table border="1">
<?php
  while ($qry2=mysql_fetch_array($qry))
    echo('<tr><td>' . $qry2['data'] . '</td></tr>');
?>
</table>

</form>
<?php
mysql_close($srvr);
?>

Редактиране на данни
</body>
</html>
Активен

С Уважение:

Luda Glawa ;-)

senser

  • Участник
  • *****
  • Публикации: 1327
    • Профил
Mysql, php и apache
« Отговор #9 -: Jan 19, 2007, 16:56 »
при мен твоя код работи с изключение на частта за извличане на данните от mysql

това според мен означава че проблема е в mysql енкодинга (почти невъзможно щом phpmyadmin попълва полетата коректно) или в апача

аз преди време имах проблем с едни рнр скриптове, в които ползвах сесии, които не сработваха  - рнр ревеше че има вече изпратени хедъри
след доста ровене се разбра че пробема е в ползването на utf-8 кодировка - заради BOM (BYTE ORDER MARKER), който се праща преди всичко останало
решението беше да ползвам UTF-8 COOKIE

не знам дали има връзка към твоя проблем, но дано те насочи в правилна посока, макар че продължавам да смятам, че проблема е в апача, шом и статичен html не се показва правилно ........
Активен

luda_glawa

  • Участник
  • *****
  • Публикации: 649
  • Distribution: Kubuntu
  • Window Manager: KDE
    • Профил
    • WWW
Mysql, php и apache
« Отговор #10 -: Jan 19, 2007, 18:40 »
Цитат (senser @ Ян. 19 2007,17:56)
при мен твоя код работи с изключение на частта за извличане на данните от mysql

това според мен означава че проблема е в mysql енкодинга (почти невъзможно щом phpmyadmin попълва полетата коректно) или в апача

аз преди време имах проблем с едни рнр скриптове, в които ползвах сесии, които не сработваха  - рнр ревеше че има вече изпратени хедъри
след доста ровене се разбра че пробема е в ползването на utf-8 кодировка - заради BOM (BYTE ORDER MARKER), който се праща преди всичко останало
решението беше да ползвам UTF-8 COOKIE

не знам дали има връзка към твоя проблем, но дано те насочи в правилна посока, макар че продължавам да смятам, че проблема е в апача, шом и статичен html не се показва правилно ........

Неееееееееее, статичния текст се визуализира правилно. В интерес на истината, не съм пробвал да записвам все още данни в базата, но може и да се наложи за теста. Колкото до phpmyadmin. Той нали има възможност да преглежда данните в дадена таблица. При това извеждане на данните имах предвид, че няма проблем - излизат на разбираем български.
Активен

С Уважение:

Luda Glawa ;-)

NOP

  • Участник
  • *****
  • Публикации: 28
    • Профил
Mysql, php и apache
« Отговор #11 -: Jan 19, 2007, 21:31 »
Пробвай веднага след като се свържеш към базата да изпълниш"
Примерен код

mysql_query(mysql,"SET NAMES 'utf8'");
mysql_query(mysql,"SET CHARACTER SET utf8");
Активен

luda_glawa

  • Участник
  • *****
  • Публикации: 649
  • Distribution: Kubuntu
  • Window Manager: KDE
    • Профил
    • WWW
Mysql, php и apache
« Отговор #12 -: Jan 23, 2007, 22:44 »
NOP пробвах както ме посъветва. За съжаление пак си остават въпросителните. Като цяло е много странно. Идващите дни ще пробвам да направя връзка към базата през python, да видя какво ще излезе. Трябва да измисля кода '<img'>  Но ако някой има друга идея, ще се радвам ако я сподели '<img'>
Активен

С Уважение:

Luda Glawa ;-)

badmind

  • Участник
  • *****
  • Публикации: 5
    • Профил
Mysql, php и apache
« Отговор #13 -: Feb 09, 2007, 15:39 »
Здравейте, аз имам следния проблем.

Чудя се от каде да започна понеже не съм от най-разбиращите и да не ми се смеете много '<img'>

Първо създавам база данни в SQL с енкодинг utf8 след което инсталирам форума. Като поствам в форума нямам грижи кирилицата се вижда и аз съм доволен, но като вляза в SQL таблицата кадето се съхраняват постовете не се вижда кирилицата и е на китайски.

Пробвах да създам база данни и с Windows -1251 (cp_1251) с всичките варянти (cp_1251_bulgarian_ci , cp_1251_general_ci cp_1251_bin) там проблема беше този с въпросителните и в форума няма текст на кирилица и ми изписва онова съобщение за ДЕБЪГ....

Проблвах и в ланг файла на форума да барникам (lang_main.php) сменях там енкодинга и с utf8 и пак не става. резултата в форума се пише кирилицата и се чете а в SQL не са коректни таблиците и са на китайски!

Мъчих се с какви ли не енкодинги и не става и не става...


ако някой може да ми помогне как да оправя този проблем и ако има други файлчета на форума които трябва да се барникат за да стане работата и този SQL и ФОРУМА да започнат да говорят на един език '<img'>


надявам се да съм обяснил правилно проблемчето.
Благодаря Ви!



Активен

DKnight

  • Участник
  • *****
  • Публикации: 9
    • Профил
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
има ли текстова дистрибуция, с php mysql i apache?
Настройка на програми
sverdlov 3 1159 Последна публикация Jun 23, 2005, 16:53
от fierce
Fedora 5 , apache+php+mysql мнооогоо нерви и нищо
Настройка на програми
nnext 8 2367 Последна публикация Jul 07, 2006, 22:29
от niau
Проблем с apache 2 + php 5.2.2 + mysql
Настройка на програми
tuningmaniac 9 2093 Последна публикация Jan 23, 2008, 17:21
от Ali Nebi
Mysql + apache
Идеи и мнения
ovdesko 22 3245 Последна публикация Jan 22, 2013, 13:35
от bop_bop_mara
Apache MySQL PHP
Сървъри
4096bits 0 1272 Последна публикация Sep 26, 2014, 19:07
от 4096bits