作業環境
cakephp3.6
centos6.9
apache2.4
mysql5.6
php7.1
概要
ローカルから本番環境にデータを移したところ、jsonレスポンスしている部分でこういうエラーが出ていてよく解消方法がわからなくて困っていた。
——-
Deprecated: Response::type() is deprecated. Use getType() or withType() instead. – /var/www/cakephp3/project/src/Controller/SitesController.php, line: 362
You can disable deprecation warnings by setting `Error.errorLevel` to `E_ALL & ~E_USER_DEPRECATED` in your config/app.php. in /var/www/cakephp3/project/vendor/cakephp/cakephp/src/Core/functions.php on line 312
Deprecated: Response::body() is deprecated. Mutable response methods are deprecated. Use `withBody()` and `getBody()` instead. – /var/www/cakephp3/project/src/Controller/SitesController.php, line: 387
You can disable deprecation warnings by setting `Error.errorLevel` to `E_ALL & ~E_USER_DEPRECATED` in your config/app.php. in /var/www/cakephp3/project/vendor/cakephp/cakephp/src/Core/functions.php on line 312
——-
やったこと
エラー部分のソースはざっくりこんなかんじだった。getとbodyがだめらしい。
ローカル環境だと動いてたのにな・・・。
SitesController.phpの部分
$this->response->type( 'json' ); $this->response->body( json_encode(['Foo' => 'bar']) );
https://book.cakephp.org/3.0/ja/controllers/request-response.html
を読んで下記のように変更したところエラーが解消した。
return $this->response->withType('application/json')->withStringBody($json);
controller部分はreturnじゃないとレスポンスに反映されないんだろうか…。
公式資料読めるようになろう…。
おわり。