Тип пользователя входа в систему Yii не получает запись

Я только что вошел в систему с помощью yii. в моей таблице входа в систему есть столбец "usertype", поэтому, чтобы проверить, нормально ли он работает, я поместил файл Writer в код, но он не получает запись (забудьте о типе пользователя, даже не о строке) каждый раз, когда код запускает его пустой. Ниже приведен код

компоненты / useridentity

<?php

class UserIdentity extends CUserIdentity

{
    private $_id;

public function authenticate()
{


            $user = Trackaccountusers::model()->findByAttributes(array('username'=>$this->username));

            if ($user===null) { // No user found!
            $this->errorCode=self::ERROR_USERNAME_INVALID;
            } else if ($user->password !== ($this->password) ) { // Invalid password!
            $this->errorCode=self::ERROR_PASSWORD_INVALID;
            } else { // Okay!
            $this->errorCode=self::ERROR_NONE;
            // Store the role in a session:
            $this->setState('usertype', $user->usertype);
            $file = "log.txt";
            $write = ("time_s ".$user->usertype."\n");//
            file_put_contents($file, $write, FILE_APPEND);
            //$this->_id = $user->id;
            }
            return !$this->errorCode;

}
            public function getId()
            {
            return $this->_id;
            }

}


person Prog_Rookie    schedule 26.09.2014    source источник
comment
У вас достаточно прав для создания файла в каталоге компонентов?   -  person rajesh ujade    schedule 26.09.2014
comment
какова файловая система (linux / windows / other), поскольку file_put_contents нельзя доверять, лучший способ по-прежнему - использовать fopen с флагом a + и убедиться, что он заблокирован, чтобы никакой другой процесс не мог его использовать (если в Windows у вас есть файл где-то открывается, и php пытается file_put_contents, это просто не удастся) #   -  person DarkMukke    schedule 26.09.2014


Ответы (1)


Такая проблема возникает по двум причинам.

  1. Убедитесь, что у вас есть разрешение на запись в каталог компонентов. Вы можете установить его, используя chmod -R +x components
  2. Убедитесь, что у вас есть владелец пользователя apache / ngnix для каталога компонентов. Вы можете установить его, используя chown -R www:data:www:data components

  3. Используйте приведенный ниже код в своих представлениях / контроллерах, чтобы проверить, установлено ли состояние Yii (usertype).

    $usertype = isset(Yii::app()->user->usertype) ? Yii::app()->user->usertype : '';
    

Примечание. Вам не нужно писать файл, чтобы проверить состояние пользователя Yii. Вместо записи файла используйте error_log("usertype = $usertype") или распечатайте состояние в поле зрения.

person rajesh ujade    schedule 26.09.2014