社内でAPIを呼び出す際に問題が発生しました。 ログは言う:私はちょっと迷ってしまいましたsymfony注意:unserialize():40のオフセット36でエラーが発生し、MysqlからPostgreSQLに移動しました
[2017-02-07 16:04:39] doctrine.DEBUG: SELECT h0_.id AS id_0, h0_.hash AS hash_1, h0_.request AS request_2, h0_.options AS options_3, h0_.serialized_response_body AS serialized_response_body_4, h0_.response AS response_5, h0_.sent_at AS sent_at_6 FROM http_request h0_ WHERE h0_.hash = ? ["dd3e36a5a38618974cae2b45f9cb3a67"] []
[2017-02-07 16:04:39] request.CRITICAL: Uncaught PHP Exception Symfony\Component\Debug\Exception\ContextErrorException: "Notice: unserialize(): Error at offset 36 of 40 bytes" at /var/www/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/ObjectType.php line 57 {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\ContextErrorException(code: 0): Notice: unserialize(): Error at offset 36 of 40 bytes at /var/www/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/ObjectType.php:57)"} []
>を。 <
EDIT:私のコントローラで
、私は、プロセスを実行するために、いくつかの情報を含むフォームを送信します。
/**
* @Rest\View(serializerGroups={"Review"})
* @Security("is_granted('ROLE_REVIEW_CREATE')")
*/
public function postAction(Request $request)
{
if ($this->getUser()->getBalance()->getTokens() == 0) {
throw new AccessDeniedException('The Review can not be created because you lack of tokens');
}
$review = new Review();
$review->setCreatedBy($this->getUser());
$reviewForm = $this->createForm(ReviewType::class, $review, [
'csrf_protection' => false,
]);
$reviewForm->submit($request->request->all());
if ($reviewForm->isSubmitted() && $reviewForm->isValid()) {
// If the user is in an organization, takes the organization analyzer environment, otherwise takes the user one.
$analyzerEnvironment = $this->getUser()->getCompany() ? $this->getUser()->getCompany()->getAnalyzerEnvironment() : $this->getUser()->getAnalyzerEnvironment();
$crawlingFlow = $this->get('app.manager.crawling_flow')->getCrawlingFlow();
$this->get('app.manager.review')->process(
$review,
$crawlingFlow,
$analyzerEnvironment
);
$reviewEncrypted = new ReviewEncrypted();
$reviewEncrypted->setReliability($review->getReliability());
$reviewEncrypted->setData($this->get('app.manager.review')->encrypt($review));
$reviewEncrypted->setCreatedBy($this->getUser());
$this->getDoctrine()->getManager()->persist($reviewEncrypted);
$this->getDoctrine()->getManager()->flush();
$review->setId($reviewEncrypted->getId());
if ($this->getUser()->getBalance()->getTokens() > 0) {
$this->getUser()->getBalance()->setTokens($this->getUser()->getBalance()->getTokens() - 1);
$this->getDoctrine()->getManager()->persist($this->getUser());
$this->getDoctrine()->getManager()->flush();
}
return $review;
}
return $reviewForm;
}
アンを呼び出す:
$crawlingFlow = $this->get('app.manager.crawling_flow')->getCrawlingFlow();
$this->get('app.manager.review')->process(
$review,
$crawlingFlow,
$analyzerEnvironment
);
いくつかのサービスが呼ばれて、彼らは私が忘れてしまった何かがある...
質問があるなど、DBに保存するようなものを行うには、要求を送信します私がdb(mysqlからpostgresqlへ)を変更したときや、それは何か他のものですか?
unserialize()エラーはどこに来る可能性がありますか?どうして ?助けのための
ありがとう:P
EDIT 2:エラーログ「ベンダー/ドクトリン/ DBAL/libに/ドクトリン/ DBAL /種類/ ObjectType.phpラインに従っから来てここで
57" :
/**
* {@inheritdoc}
*/
public function convertToDatabaseValue($value, AbstractPlatform $platform)
{
return serialize($value);
}
/**
* {@inheritdoc}
*/
public function convertToPHPValue($value, AbstractPlatform $platform)
{
if ($value === null) {
return null;
}
$value = (is_resource($value)) ? stream_get_contents($value) : $value;
$val = unserialize($value);
if ($val === false && $value !== 'b:0;') {
throw ConversionException::conversionFailed($value, $this->getName());
}
return $val;
}
あなたのコードについて何か? – Random
データが役立つ可能性があります。 – AbraCadaver
残念なことに投稿編集 –