2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Phalcon\Session\Adapter\RedisでSegmentation Faultが発生する

Posted at

問題

アプリケーションのセッション管理にPhalcon\Session\Adapter\Redisを使用した際にSegmentation Faultが発生する。

原因

セッション情報が作成されていない段階でsession_start()した際に
session_set_save_handler()で登録されたwrite()が空文字を保存しようとしている。

対処法

dataの存在チェックを追加してcompielし直す。

redis.zep
(省略)
	/**
	 * {@inheritdoc}
	 */
	public function write(string sessionId, string data)
	{
		// dataが空の場合は書き込まない
		if empty data {
			return;
		}

		this->_redis->save(sessionId, data, this->_lifetime);
	}

非compileの場合(yum等でインストールした場合)はサブクラスを作成してoverrideする。

Redis.php
<?php

namespace MyApp\Session\Adapter;

class Redis extends \Phalcon\Session\Adapter\Redis
{
	/**
	 * {@inheritdoc}
	 */
	public function write($sessionId, $data)
	{
		// dataが空の場合は書き込まない
		if (empty($data)) {
			return;
		}

		$this->_redis->save($sessionId, $data, $this->_lifetime);
	}
}

応急処置な感が強いですが、一先ずこれで

環境

  • PHP 5.6.18
  • Phalcon 2.0.10
2
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?