Приложение на общем хосте теперь дает
… datefmt_create: нет такого часового пояса: 'America / Los_Angeles'
когда пользователь пытается получить доступ к форме с полем даты. Полное сообщение:
Uncaught PHP Exception Symfony \ Component \ Form \ Exception \ TransformationFailedException: "Невозможно преобразовать значение для пути свойства" contactDate ": datefmt_create: нет такого часового пояса: 'America / Los_Angeles': U_ILLEGAL_ARGUMENT_ERROR" на /www3.projectmana.org/vendor/ symfony / symfony / src / Symfony / Component / Form / Form.php line 1149
За недели не было никаких изменений на сайте.
Часовой пояс по умолчанию через phpinfo()
– America/Los_Angeles
Любые рациональные объяснения / исправить для этого? На одном сервере есть песочница сайта, которая демонстрирует ту же ошибку. Ошибка не возникает в моей системе разработки PHP 7.
Я заменил установку Symfony 2.8 (тестировал) 3.1.5 – подобное поведение. Ошибка:
Произошла ошибка! Uncaught PHP Exception Symfony \ Component \ OptionsResolver \ Exception \ InvalidOptionsException: "datefmt_create: нет такого часового пояса: 'America / Los_Angeles': U_ILLEGAL_ARGUMENT_ERROR" в /www3.projectmana.org/vendor/symfony/symfony/src/Symfony/Component/Form /Extension/Core/Type/DateType.php строка 88
используя следующий упрощенный код:
контроллер:
/** * @Route("/datecheck") */ public function dateCheckAction() { $form = $this->createFormBuilder($task) ->add('dueDate', DateType::class) ->add('save', SubmitType::class, array('label' => 'Create Task')) ->getForm(); return $this->render('Default/datecheck.html.twig', [ 'form' => $form, ]); }
шаблон:
{{ form(form) }}
Когда я смотрю на ошибку приложения, а не на простой код выше, я вижу:
Произошла ошибка! Uncaught PHP Exception Symfony \ Component \ Form \ Exception \ TransformationFailedException: "Невозможно преобразовать значение для пути свойства" contactDate ": datefmt_create: нет такого часового пояса: 'America / Los_Angeles': U_ILLEGAL_ARGUMENT_ERROR" на /www3.projectmana.org/vendor/ symfony / symfony / src / Symfony / Component / Form / Form.php line 1095
Код из Form.php вокруг этой строки:
try { foreach ($this->config->getViewTransformers() as $transformer) { $value = $transformer->transform($value); } } catch (TransformationFailedException $exception) { throw new TransformationFailedException( 'Unable to transform value for property path "'.$this->getPropertyPath().'": '.$exception->getMessage(), $exception->getCode(), $exception ); }
Результат var_dump($transformer)
когда он включен в исключение,
object(Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToLocalizedStringTransformer)#1128 (6) { ["dateFormat":"Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToLocalizedStringTransformer":private]=> int(2) ["timeFormat":"Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToLocalizedStringTransformer":private]=> int(-1) ["pattern":"Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToLocalizedStringTransformer":private]=> string(5) "M/d/y" ["calendar":"Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToLocalizedStringTransformer":private]=> int(1) ["inputTimezone":protected]=> string(19) "America/Los_Angeles"
Не уверен, что делать с этой информацией.