Файл cookie настройки Symfony 4 -> недопустимое имя файла cookie?

Пытаюсь установить куки и получаю ошибку при установке

Предупреждение. Имена файлов cookie не могут содержать ни одного из следующих символов '=,; \т\р\п\013\014'

но мое имя selector подходит?

$cookie = new Cookie('selector', $cookieData, time() + 60 * 60 * 24 * 365, '/', null, false, false);        
setCookie($cookie);

person Sam    schedule 13.08.2018    source источник
comment
Вы уверены, что у вас нет какого-то непечатаемого символа прямо внутри имени?   -  person Jovan Perovic    schedule 14.08.2018
comment
Забавная вещь: это сообщение, кажется, не исходит от symfony/http-foundation, так как сообщение должно быть The cookie name "%s" contains invalid characters.. Вы импортировали правильный класс Cookie?   -  person Jovan Perovic    schedule 14.08.2018


Ответы (1)


setcookie — это функция PHP, которая не предназначена для работы с классом Symfony Cookie. Технически ваш код даже не должен работать, потому что функция PHP на самом деле вся в нижнем регистре, например: setcookie. Вы должны получить сообщение об ошибке для неопределенной функции, потому что setCookie является методом объекта Response. Это не глобально.

В любом случае, если вы хотите использовать фреймворк Symfony, вам нужно будет установить такой файл cookie, используя объект Response:

$response->headers->setCookie($cookie);

Если вы хотите использовать только PHP, вы должны установить файл cookie следующим образом:

setcookie('selector', $cookieData, time() + 60 * 60 * 24 * 365, '/');

Надеюсь, это поможет!

person Chip Dean    schedule 13.08.2018
comment
Хорошо, я на самом деле проигнорировал отсутствующий $response->headers->, так как думал, что он мог быть вырезан во время копирования-вставки... :-/ И CamelCase setCookie тоже не помог... - person Jovan Perovic; 14.08.2018
comment
На самом деле это еще один хороший момент. Я предположил, что ошибка возникла из-за того, что PHP пытался преобразовать объект cookie в строку, что привело бы к созданию недопустимых символов. - person Chip Dean; 14.08.2018
comment
Да, наверное, это причина. Класс Cookie имеет метод __toString(), который здесь будет вызываться PHP неявно. И поскольку PHP нечувствителен к регистру, когда речь идет об именах функций, не имеет значения, вызываете ли вы setCookie() или setcookie(). - person xabbuh; 14.08.2018