🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

1回答

3736閲覧

同じcakephpの3.6.15を使用しているのに片方ではServerRequest::session() is deprecated. Use getSession() instead.のエラーが出

sarasa_38765

総合スコア34

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2019/11/13 07:22

前提・実現したいこと

cakephpの3.6.15バージョンでシステムを構築しています。
開発機では$this->request->session()で問題なく動作するのに
実機ではServerRequest::session() is deprecated. Use getSession() insteadのエラーがでてしまいます。
命令を差し替えろというのはわかるのですがなぜ開発機の方でエラーが出ないのか?
cakephp3のバージョンも合わせているのでなぜエラーになるのかわかりません。
とりあえず開発機と同じようにServerRequest::sessionで動作させたいのです。

発生している問題・エラーメッセージ

ServerRequest::session() is deprecated. Use getSession() instead. The setter part will be removed
他$this->request->dataや$this->request->queryも同様に差し替えなさいというエラーが出てきます

該当のソースコード

public function initialize() { parent::initialize(); //セッション作成 $this->Session = $this->request->session(); //実機でエラー //$session = $this->getRequest()->getSession(); $this->loadComponent('RequestHandler', [ 'enableBeforeRedirect' => false, ]); $this->loadComponent('Flash');

試したこと

補足情報(FW/ツールのバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoorwm

2019/11/13 07:31

PHPのバージョンを調べてみてください
CHERRY

2019/11/13 07:42

php の設定も同じですか?
sarasa_38765

2019/11/13 07:44

すいません、php.iniの確認でしょうか?
yoorwm

2019/11/13 07:48

というか、「ServerRequest::session() is deprecated」と出てるんだからPHPじゃなくてライブラリの方のメッセージか。 「同じ」と言ってるけどどこか違うんでしょう。 (導入手順から見直してみるとか。)
guest

回答1

0

ベストアンサー

// 3.5.0 以前 $this->request->session(); // 3.5.0 以降 $this->getRequest()->getSession();

と、CakePHP 3.5 以降で、古い書き方は deprecated になりました。
そのため、エラーレベルで E_USER_DEPRECATED が有効である場合は警告が出ます。

開発機と実機で、config/app.php 内の errorLevel の指定が異なっていませんか?

※まあ、本質的には警告が出ないようにソースを書き換えておくべきですが

投稿2019/11/13 07:51

編集2019/11/13 07:59
tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sarasa_38765

2019/11/13 07:58

'Error' => [ 'errorLevel' => E_ALL, 'exceptionRenderer' => 'Cake\Error\ExceptionRenderer', 'skipLog' => [], 'log' => true, 'trace' => true, ], どちらも同じでした。ひょっとして今は3.6.15なので動きとしては実機が正しく開発機の方がおかしいという事ですかね?
sarasa_38765

2019/11/13 07:59

3.5.*指定で一度作り直してみます。
tacsheaven

2019/11/13 08:00

コードを書き換えることを優先した方がいいです。 基本的に 3.x 系ではプロパティを直接アクセスさせず、getter を定義してそちらを利用するように変更していってますから。
sarasa_38765

2019/11/13 08:05

残念ながら完成しているシステムなので、もうスケジュール的に触れる時間がないんです。とりあえず開発機通りに動いていただく事を今回は優先します。
yoorwm

2019/11/13 08:28

CakePHPはよく分からないけどたぶんcomposer.lockというのがあると思うので、それを比べてみるとどうでしょう?
tacsheaven

2019/11/13 08:45

CakePHP の app.php 内の記述が違わないなら、あとは php.ini 内の error_reporting の設定を見てください。
sarasa_38765

2019/11/15 05:26

php.iniのerror_reportingも同じでした。対処療法ですが実機のcakephpを3.5のバージョン指定でインストールして無事開発機のソースを動かず事ができました。
tacsheaven

2019/11/15 05:38

E_ALL は「全て報告対象」なので、そこから E_USER_DEPRECATED を抜く(~E_USER_DEPRECATED)のが本来なのですが、まあ3.5 へ落として問題ないならよいでしょう…… ※errorLevel の指定の前の方にいろいろコメントされてる筈なんですが
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問