• 締切済み

お願いします。

CakePHP1.2で開発しております。 ユーザ登録をする処理でローカルではうまくいっていたんですが、本サーバで動作の確認をすると、DBに登録する際に次のようなWarningが出てしまい、登録ができません。 $this->User->save()の箇所で弾かれてしまいます。 Warning (2): Unknown: open(/var/lib/php/session/sess_in2e3u6bfrvq8c8orrkf82n516, O_RDWR) failed: Permission denied (13) [Unknown, line ??] Warning (2): Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) [Unknown, line ??] これはファイルのパーミッションが問題なのでしょうか。 時間がなくてテンパってしまってます。 宜しくお願いします。

みんなの回答

  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.4

ANo.1です。 エラーは出ないがバリデーションに意図しない問題があり登録できないといった感じでしょうか? >サーバ側に問題があるのでしょうか。 そうですね、ローカルでは問題ないということであればサーバとの設定の違いに原因があるのは間違いないでしょう。 例えば、Webサーバ(Apacheなど)の設定、PHPのバージョン、PHPの設定、CakePHPのバージョンなどをチェックしてみる必要があるものと思われます。

すると、全ての回答が全文表示されます。
  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.3

ANo.1です。 セッションのパーミッションの問題は解決したけれども、別の問題が発生しているということでしょうか。 「弾かれる」の意味もよくわかりません。何かエラー(ログ含む)は出力されていないのでしょうか。

BeginnerPG
質問者

お礼

お世話になります。 エラーは出ていないです。 因みに、 $this->User->set($this->data); Configure::write('debug', 3); $fields = $this->User->invalidFields(); debug($this->User); debug($fields); if ($this->User->save()) { } をしてみたところ、 app/controllers/users_controller.php (line 174) Array ( [password] => 半角英数で入力して下さい ) が出てきましたが、 User Object [data] => Array ( [User] => Array ( ~中略~ [password] => anhyvit8 ) と、ちゃんとデータは入っていました。 モデルは 'password' => array( 'rule'=> 'alphaNumeric', 'message' => '半角英数で入力して下さい'), のような具合でバリデーションしています。 そもそも、ローカルでは正常に動いていますので、サーバ側に問題があるのでしょうか。

BeginnerPG
質問者

補足

password' => array( 'rule'=> 'alphaNumeric', のバリデーションが引っ掛かってるのが原因だと思うのですが、 パスワードも新規登録時に自動でランダムな半角英数字を生成して格納している処理をしています。 これもローカルでは正常に通るのですが、なぜかサーバでは通らないです。 原因が思い当たりません。

すると、全ての回答が全文表示されます。
  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.2

一度 /var/lib/php/session 以下のセッションファイルをすべて削除してから再度試してみるとどうでしょうか。 ちなみに、セッションファイルの所有者(Owner)およびグループは何と表示されていますでしょうか。差し支えなければ教えてください。

BeginnerPG
質問者

お礼

回答ありがとうございます。 >セッションファイルの所有者(Owner)およびグループは何と表示されていますでしょうか nobodyです。 セッションファイルを消してみたんですが結果はやはり、$this->User->save()のところで弾かれてしまいます。 セッションのwarningはなくなったんですが。 因みに、弾かれる部分です。 $this->User->set($this->data); if ($this->User->save()) { ~中略~ return; } $this->Session->setFlash(__('Failed to regist. Please try again.', true)); $this->render('regist_confirm'); } データはデバッグしてみて、ちゃんと値は入っている状態でした。

すると、全ての回答が全文表示されます。
  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.1

/var/lib/php/session/のパーミッションはいくつになっていますか?

BeginnerPG
質問者

お礼

回答していただきありがとうございました。 /var/lib/php/session/のパーミッションを777に変更してみましたが、やはり解決しません。 session/直下のファイルのパーミッションが600でしたが、こちらも変更する必要があるのでしょうか。

BeginnerPG
質問者

補足

すいません。サーバの担当者がいないのでわかりません。 調べる方法はどうすればよいのでしょうか。 お手数おかけします。

すると、全ての回答が全文表示されます。

関連するQ&A