質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

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

CakePHP

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

Q&A

1回答

1678閲覧

CakePHP2.6.10でローカル環境ではログインできるが、本番環境ではログインできません

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

CakePHP

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

0グッド

0クリップ

投稿2016/02/09 09:38

編集2022/01/12 10:55

CakePHPでログイン機能の実装をしているのですが、ローカル環境では動作するのですが、本番環境だとログインできません。本番環境にはGMOのiClusta+のレギュラープランを使用しております。

本番環境での失敗の原因としまして、ログイン時にlogin関数内の$this->Auth->login()がtrueになっていないことにあります。
さらに掘り下げるとlib/Model/Datasource/CakeSession.phpのcheck関数にて
self::_hasSession()やself::start()がローカルであればtrueになるところが共にfalseになっています。また、セッションもデータベースに保存されません。ログにも何も出力されません。

$this->Session->write('hoge', 'fuga');を実行して$this->Session->read('hoge')
で確認したところ値を読み込め、$_SESSIONを使用しても値は取得できます。

また、セッション以外のものについてはCakePHPのsave関数でデータベースに値を書き込めることも確認しています。

・ローカル環境
Windows Version: Windows 7 Professional SP1 32-bit
XAMPP Version: 5.6.12
Control Panel Version: 3.2.1
mysql Ver 14.14 Distrib 5.6.26, for Win32 (x86)

データベース

mysql

1mysql> show full columns from `cake_sessions`; 2+---------+--------------+-----------------+------+-----+---------+-------+----- 3----------------------------+---------+ 4| Field | Type | Collation | Null | Key | Default | Extra | Priv 5ileges | Comment | 6+---------+--------------+-----------------+------+-----+---------+-------+----- 7----------------------------+---------+ 8| id | varchar(255) | utf8_general_ci | NO | PRI | | | sele 9ct,insert,update,references | | 10| data | text | utf8_general_ci | NO | | NULL | | sele 11ct,insert,update,references | | 12| expires | int(11) | NULL | YES | | NULL | | sele 13ct,insert,update,references | | 14+---------+--------------+-----------------+------+-----+---------+-------+----- 15----------------------------+---------+ 163 rows in set (0.01 sec)

core.php中では以下の設定を行っています。

php

1Configure::write('Session', array( 2 'defaults' => 'database', 3 'cookie' => 'SID', 4 'timeout' => 259200, 5 'ini' => Array( 6 'session.cookie_lifetime' => 2580000, 7 'session.gc_maxlifetime' => 2580000, 8 'session.gc_probability' => 1, 9 'session.gc_divisor' => 100 10 ) 11 ));

ログイン画面を実装しているUsersControllerは以下の通りとなります。

php

1public $components = array( 2 'Session', 3 'Auth' => array( 4 'loginAction' => array( 5 'controller' => 'users', 6 'action' => 'login' 7 ), 8 'loginRedirect' => array( 9 'controller' => 'members', 10 'action' => 'index' 11 ), 12 'logoutRedirect' => array( 13 'controller' => 'mains', 14 'action' => 'index', 15 'home' 16 ), 17 'authenticate' => array( 18 'Form' => array( 19 'passwordHasher' => 'Blowfish', 20 'fields' => array( 21 'username' => 'mail_address', 22 'password' => 'password') 23 ) 24 ) 25 ), 26 'Mail', 'Render' 27 );

php

1public function login() { 2 if ($this->request->is('post')) { 3 if ($this->Auth->login()) { 4 $this->Render->redirect($this, 'members', 'index'); 5 } 6 else { 7 $this->Session->setFlash('登録情報と一致しません。', 'default', array(), 'auth'); 8 $this->Render->redirect($this, 'mains', 'complete/failure'); 9 } 10 } 11 12 $this->Render->redirect($this, 'mains', 'index'); 13 }

宜しくお願い致します。

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

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

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

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

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

coba-coba

2016/02/09 22:34

何が原因かを調べるために、もう少し切り分けたいですね。試しにCakePHPを新たにインストールしてみて、確認しましたか?基本すぎて見落としがちですが、tmpフォルダのパーミッション設定やデータベース接続設定などで引っかかっている可能性もありますし。
退会済みユーザー

退会済みユーザー

2016/02/10 02:49

有難うございます。引き続き原因の切り分けを行っていきます。 別のエラー発生時にはログ出力されていたのでおそらくはパーミッションの問題ではなさそうです。また、database.phpの設定で本番環境用に設定して、セッション以外の他のデータはCakePHPの関数を用いてデータの引き出しや挿入ができていたところまでは確認しております。。。
guest

回答1

0

また、セッション以外のものについてはデータベースに値を書き込めることも確認しています。

1.コンソールなどで接続して書き込んでいる
2.CakePHPの外で実装した機能で書き込んでいる
3.CakePHPで実装した機能で書き込んでいる
のうち、1.または2.であれば、database.phpの設定内容を一度確認してはいかがでしょうか。

また、ログインを試みた際に表示されるエラーの文面から、ある程度推測できると思われます。

投稿2016/02/09 10:14

KensukeNoda

総合スコア11

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

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

退会済みユーザー

退会済みユーザー

2016/02/09 10:38

3のCakePHPのsave関数で保存したものでした。 ログインを試みた際は何も表示されませんでした。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問