another_dream
@another_dream
Backend-разработчик, Laravel/ZF2/Yii2

Почему Yii2 при POST AJAX возвращает 500 код но при том в ответе содержится корректный набор данных?

Началось всё буквально недавно, на пустом месте, как говорится.

Из браузера посылается AJAX POST запрос, на стороне сервера запрос обрабатывается корректно, но при возврате данных из экшена браузер получает 500 статус при том, что данные тоже приходят:
- i.imgur.com/fM1rv2o.png
- i.imgur.com/fp0dANe.png

Из экшена данные возвращаются в формате JSON:
<?php
//...
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
$data = [...];
return $data;
// ...
?>

Если вернуть что-то из экшена через echo - тоже самое.
Если дампануть (dd или dump(), к примеру) - тогда 200 статус.
В чём может быть причина?
Спасибо.
  • Вопрос задан
  • 408 просмотров
Решения вопроса 1
another_dream
@another_dream Автор вопроса
Backend-разработчик, Laravel/ZF2/Yii2
В логах ничего не было, эмпирическим путём был выявлена проблема: E_WARNING, который, почему-то, нигде не отображался, пока не перехватил вручную, повесив обработчик ошибок
Решение (UPD)
set_error_handler(
            function ($errno, $errstr) use($data) {
                var_dump($errstr);
            },
            E_ALL
        );

session_write_close(): open(/var/www/mysite/data/mod-tmp/sess_s8jm3ltvjbwermqsdr035rk6fp6, O_RDWR) failed: No such file or directory (2)"
string(162) "session_write_close(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/www/mysite/data/mod-tmp)


Оказалось, что этой директории не существовало вовсе, решение - создаём директорию и указываем права на запись.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы