Pergunta

Estou usando a estrutura Kohana 3 e estou usando o driver de sessão nativa.

Por alguma razão, ocasionalmente as sessões não conseguem escrever em seu arquivo.

Warning: session_start() [function.session-start]: open(/tmp/sess_*****, O_RDWR) failed: Permission denied (13) in /home/site/public_html/system/classes/kohana/session/native.php  on line 27

Tenho certeza de que o Kohana tem seu próprio manipulador de erros construído, mas não é acionado com esse erro (ou seja, ele aparece como um erro normal de PHP, não o erro Kohana).

PHP error
(fonte: Alexanderdickson.com)

Qualquer um que já tenha usado Kohana notará que isso parece ter ignorado o manuseio de erros de Kohana (talvez definido com set_error_handler()).

Existe de alguma forma para impedir que este erro apareça sem Mudando do driver da sessão nativa (ou seja, baseada em arquivo)?

Devo apenas dar uma boa prática a bota e prender um @ supressor de erro para session_start() No código central de Kohana? Devo relaxar o error_reporting()?

Obrigado

Foi útil?

Solução

Você chama ini_set('session.save_path', APPPATH.'sessions') (substituir APPPATH.'sessions' com o diretório que você deseja) no bootstrap.php para forçar as sessões a serem escritas application/sessions. Isso aumentará a segurança do uso de sessões nativas e deve Resolva seu problema.

Outras dicas

Cabe à diretiva session.save_path do PHP, você pode substituí -la para uma pasta gravável em php.ini, ou pode tentar isso no seu .htaccess;

 php_value session.save_path '/path/to/folder/you/can/write'

EDIT: Só para não esquecer, coloque seu nível de pasta de sessão personalizado abaixo dos htdocs/public_html/o que for.

Embora tudo isso seja um pouco exagerado, pois você pode solicitar ao seu servidor que o administrador de verifique qual é o problema das permissões.

Isso significa que seu intérprete PHP não possui permissões de gravação em /TMP. Peça ao administrador do seu servidor para corrigir isso - não está relacionado ao seu aplicativo.

Caso haja colisões com arquivos de sessão de diferentes processos PHP (em execução sob diferentes usuários): dar a eles diferentes diretores de temperatura da sessão ajudaria. Por exemplo, você pode afastá -los de/tmp para/path/to/homedir/phptmp e usar uma estrutura como essa:

/path/to/homedir/
/path/to/homedir/htdocs
/path/to/homedir/phptmp
/path/to/homedir/logs
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top