Помогите, кто может. Drupal стал добавлять бэкслэш перед кавычкой при сохранении в MySQL.

Главные вкладки

Аватар пользователя Oleg_L Oleg_L 28 апреля 2012 в 20:37

Добрый вечер (если он добрый),

Проблема возникла.

На моём хостинег (а это BlueHost.com) на моих друпалах (а там у меня несколько установок) при редактировании тела ноуда, при сохранении в базе стал друпал добавлять обратную наклонную строку перед ковычкой.

То есть пишешь в текста страницы что-то, содержащее ",
а потом смотришь в phpMyAdmin, а в базе она уже не ", а вовсе 2 символа - \".

Начинаешь редактироварить текст через друпал по-новой, сохраняешь в базе - тут тебе уже и \\".
Короче число паразитных символов \ возрастает с сохранением.

Если руками залезть в базу, то, конечно, всё это можно повычистить - но это ж не жизнь.

Вот проклятие! От этого в тело страницы ни линки нельзя вставить ни куски кода, короче - ужас.

Обнаружил это сегодня, а раньше (пару дней назад) всё работало.

Причём этот эффект виден и на старых инсталляциях друпала (и 6 и 7) на моём хостинге, и на новой, только что установленной для проверки версии (7.12).

Но - там же на сервере вордпресс работает нормально - сохраняет кавычку как кавычку, то есть драйвер PHP-MySQL наверное ни при чём (или причём?).

Много месяцев всё работало. Несколько установок нормально всё сохраняли в базе.

Как с этим бороться?
Было у кого такое?

С уважением, Олег

Комментарии

Аватар пользователя Orion76 Orion76 28 апреля 2012 в 21:46

"RxB" wrote:
Сомнительно что это друпал, так как в друпале парадигма - вставлять в БД как есть

кстати да... может привыводе добавляется? А потом уже сохраняется с бэкслешем...?
т.е. не при выводе, а при открытии на редакутирования...

ЗЫ.. чет мне кажется, какойто визивиг-редактор... у вас кстати какой?

Аватар пользователя Oleg_L Oleg_L 28 апреля 2012 в 22:11

Спасибо за ответы, но -

1) Редактора никакого. Вернее был на некоторых инсталляциях CKEditor, но я его повалил уже. Что с ним что без него - эффект один и тот же.
Да, к стати - что Full HTML, что PHP code и что в прочих режимах тот же эффект - та же проблема.

2) Не при выводе проблема, при сохранении в базу.
Ещё раз - пишешь в теле ноуда что-нибудь с кавычкой - сразу после этого идёш в базу и там, в базе видно, что текст уже с бэкслэшем перед кавычкой.

3) Я далёк от этого PHP. Как оно у него устроено - при коннекте к базе?
Сначала принимаем параметры по HTTP POST, потом друпал их парсит,
потом, я, так вижу, после, ниже слоем есть куски кода в самом друпале для работы с базой -
потом что идёт - нативный драйвер для доступа из PHP к MySQL?

Как устроен PHP - все инсталляции и друпала и вордпресса и пр - они используют тот же самый, для всех установленный драйвер?
Или там есть ещё какой-то слой?

Если проблема в PHP-MySQL драйвере, почему же тогда вордпресс сохраняет без бэкслэша перед кавычкой?

На домашнем ПК всё без проблем - и было и осталось.

Беда в том, что хостинг дешёвеньктй и мне там не дадут поменять драйвера или как-то глубоко покопаться.

На саппорт я им написал, конечно, но они сказали что в течении 24 часов рассмотрят...

Аватар пользователя Orion76 Orion76 29 апреля 2012 в 13:22

какие модули присутствуют на всех сайтах, сохраняющих кавычки с бэкслэшем?
кстати... от браузера это не зависит?.. разные браузеры.. разные компы... пробовали?

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 29 апреля 2012 в 14:24

"orion76" wrote:
какие модули присутствуют на всех сайтах, сохраняющих кавычки с бэкслэшем?
кстати... от браузера это не зависит?.. разные браузеры.. разные компы... пробовали?

Причём тут это? Самая вероятная версия была озвучена в другом топике - magic quotes

Аватар пользователя Oleg_L Oleg_L 29 апреля 2012 в 15:35

Спасибо за идею - про php.ini.
Читаю описание краткое - что такое magic_quotes_gpc.
Очень похоже на то, что надо.

Вопросы-
1) Если на хостинге установлен PHP, то настройки этого самого magic_quotes_gpc в файле php.ini - они действуют для всего моего аккаунта - для всех инсталляций Друпала и Водрпресса и пр?
Если да, то почему поведение Друпала и ВП разное - Друпалы мои сохраняют кавычки с бэкслэшем, а Вордпрес - нормально, без бэкслэша?

2) Что-то мне кажется, что по моим деньгам мне не дадут поковыряться в настройках php.ini

>какие модули присутствуют на всех сайтах, >сохраняющих кавычки с бэкслэшем?

-Просто поставил новую чистую инсталляцию Друпала - 7.12 и уже - получите не приятность. Как и на всех других старых инсталляциях - хоть с модулями хоть без оных.
А позавчера всё на всех работало...

Аватар пользователя drupby drupby 29 апреля 2012 в 16:07

magic_quotes должны быть установлены в OFF - они вообще не нужны ,
обращайтесь к хостеру ,пускай выключают.

Аватар пользователя drupby drupby 29 апреля 2012 в 16:09

"Oleg_L" wrote:
А позавчера всё на всех работало...

хостеру по голове дать за такие чудачества , а что за хостинг такой ?
пускай выключат magic_quotes как было .

Аватар пользователя Oleg_L Oleg_L 29 апреля 2012 в 17:24

Посмотрел - у меня вообще нету этого файла php.ini (или плохо искал или он мне не доступен).

Версия PHP 5.2
Есть возможность перейти на 5.3
Наверное попробую.

В файле php.ini на домашнем ПК написано про параметер magic_quotes_gpc -
Also note, this feature has been deprecated as of PHP 5.3.0 and is scheduled for removal in PHP 6.

Может с переходом на 5.3 это всё поправится?...

Аватар пользователя Oleg_L Oleg_L 29 апреля 2012 в 18:08

Есть !
Заработало!

Боооольшое спасибо за совет про magic_quotes !

Я поставил на сервере PHP 5.3, после этого появился php.ini и в нём все эти magic_quotes отключены нафиг.

За-ра-бо-та-ло!

Спасибо, братцы. я спасён.

С уважением, Олег

Аватар пользователя Gepard Gepard 1 мая 2012 в 10:08

natbampo wrote:
странно, конечно, друпал как бы умеет работать и с включенными магич. кавычками. В ядре ф-ция под это существует.

Но к сожалению не работает(((

У меня в hostmonster перестали работать сразу сайты и на 6м и 7м друпале, пока не добавил php.ini, при этом техподдержка: "это известная проблема, сообщество друпал уже работает над этим". а ведь сами включили...

Аватар пользователя Gepard Gepard 1 мая 2012 в 10:09

При этом примечательно, что и CKEditor не хотел сохранять настройки. После добавления php.ini стал нормально сохраняться

Аватар пользователя natbampo natbampo 1 мая 2012 в 10:39

включил себе на локалке маг кавычки, друпал естественно нормально их убирает. Ваша проблема в чем то другом. Если хотите узнать, то могу сказать где что в коде прологировать.

Аватар пользователя Gepard Gepard 1 мая 2012 в 11:04

natbampo wrote:
включил себе на локалке маг кавычки, друпал естественно нормально их убирает. Ваша проблема в чем то другом. Если хотите узнать, то могу сказать где что в коде прологировать.

Так я добавил php.ini с двумя строчками

magic_quotes_gpc = Off
magic_quotes_runtime = Off

И все решилось

Аватар пользователя natbampo natbampo 1 мая 2012 в 11:09

вопрос не в том, что у тебя сейчас все хорошо, а почему не работало тогда Wink
У друпала в .htaccess установлено между прочим
php_value magic_quotes_gpc 0

Аватар пользователя drupby drupby 1 мая 2012 в 11:14

"natbampo" wrote:
У друпала в .htaccess установлено между прочим
php_value magic_quotes_gpc 0

magic_quotes_gpc по идее логическое значение ,поэтому наверное лучше php_flag magic_quotes_gpc off ,по крайней мере в D7 так прописано.