Como posso corrigir o erro de permissão quando eu chamo session_start ()?

Quando eu coloquei o script no servidor, recebi esse erro

Aviso: Desconhecido: aberto (/ tmp / sess_58f54ee6a828f04116c2ed97664497b2, O_RDWR) falhou: Permissão negada (13) em Desconhecido na linha 0

Aviso: Desconhecido: Falha na gravação de dados da session (arquivos). Verifique se a configuração atual de session.save_path está correta (/ tmp) em Unknown na linha 0

O erro apareceu quando chamo session_start(); Embora eu defina a permissão da pasta / tmp para 777.

Altere o caminho da session onde você pode escrever dados ou entrar em contato com o administrador do servidor sobre o problema / tmp

http://php.net/manual/en/function.session-save-path.php

você precisará alterar sua session.save_path diretriz php.ini

Você pode fazer isso usando session_save_path

Se você tem access SSH, aqui é como corrigir a permissão e a propriedade

 sudo chown -R NAME_OF_USER /tmp 

Substitua NAME_OF_USER pelo usuário sob o qual executa o php. Você pode encontrá-lo simplesmente colocando essas linhas em um arquivo php:

 $processUser = posix_getpwuid(posix_geteuid()); print $processUser['name']; exit; 

Além disso, você pode querer usar ini_set('session.save_path', '/dir/here'); supondo que você tenha access a esta function. As outras maneiras sugeridas são válidas.

Eu acabei de ter exatamente o mesmo problema com um dos meus scripts PHP e eu era como o que eu rompi, porque funcionou perfeitamente no dia anterior e eu o estou executando da minha própria máquina local Puppy Linux por isso não é mesmo um host ou nada.

A única coisa que eu estava fazendo antes disso estava tentando fazer com que o Java funcionasse no navegador da Web, então, como eu consegui que o Java funcionasse, mas quebrou o PHP – oops!

De qualquer forma, lembrei-me de que, enquanto tentava fazer com que o Java funcionasse, eu tinha excluído o conteúdo da pasta / tmp para eliminar qualquer coisa que pudesse estar causando um problema (ele realmente acabou com o Java que estava usando o antigo plugin oij com o novo Firefox )

Para resolver este problema, abri o Gerenciador de arquivos Rox, fui para a pasta / e cliquei corretamente na folder -> Mount Point 'tmp' and clicked properties tmp folder -> Mount Point 'tmp' and clicked properties .

Eu notei que as permissions foram definidas como Proprietário – Ler, Escrever, Exec, mas o Grupo e o Mundo só foram definidos em Leia e Exec e não Gravar. Eu coloquei um tic em Write para Grupo e Mundo e agora o PHP funciona bem novamente.

Eu não sei em que ponto as permissions para tmp devem ter mudado, mas para PHP usá-las deve ser configurado para ter permissions de gravação.

Verifique se você não está executando problemas no diskspace. Se todas as permissions estiverem corretas (e 777 deve fazê-lo para você), então você ainda pode obter esse erro (para algumas versões do PHP e Apache) se não houver espaço suficiente para gravar no disco.

Eu tive esse problema na seguinte situação:

  1. Preenchi algumas sessões com PHP
  2. Enquanto a session ainda estava ativa, eu mudei do PHP 5.4 para o 5.3 no meu host.
  3. Recarregar a página deu o erro, descrito acima.
  4. Reinicie a versão do PHP para 5.4 novamente.
  5. Usado session_unset (); e session_destroy (); para limpar a session atual.
  6. Mudou a versão do PHP de volta para 5.3.
  7. Agora, ele funciona de novo.

Conclusão: por uma razão irrelevante, tive que mudar minha versão do PHP, e ao mudar com as sessões vivas, as sessões ficam corrompidas.

Eu percebi que este é um post antigo, no entanto, eu acabei de encontrar esse problema e encontrei uma solução fácil.

Para mim, a questão estava acontecendo com um dos meus sites implantados localmente. Eu não tentei acessar os sites usando outros navegadores, mas estava acontecendo toda vez que eu tentava acessar este site via Chrome. Eu decidi entrar nas ferramentas do desenvolvedor do Chrome, sob a guia da aplicação – e clicando em “Limpar armazenamento”. Voila – tudo está funcionando como magia novamente.

Espero que isso ajude alguém!

Adicione a seguinte linha

 ini_set('session.save_path', getcwd() . '/tmp'); 

antes

 session_start(); 

E se :

  • session.gc_probability> 0
  • Os arquivos de session são criados por usuários diferentes (por exemplo, root e apache).
  • os arquivos de session são todos armazenados no mesmo local (por exemplo / var / lib / php / session)

Então você verá esse erro quando, por exemplo, o processo do Apache PHP tentar executar a garbage collection nos arquivos da session.

Conserta :

  1. Reconfigure o PHP para que gc_probability seja 0 e tenha um trabalho do cron removendo o (s) arquivo (s) antigo (s).
  2. Peça a cada usuário diferente que guarde seus arquivos de session em locais separados (session_save_path () etc).

Se você estiver usando o Apache web Apache , a solução rápida é ir para sua linha de comando e digitar:

 open /etc/apache2/ 

então, a partir da janela aberta, abra o arquivo chamado httpd.conf e procure por User ou Group altere essas 2 linhas para:

 User _www Group _www 

Isso é porque você quer que seu servidor tenha permissão para seus diretórios de sistemas, especialmente você deseja alterar o User ou pode deixar seu Group para staff ou admin .

Eu tenho o mesmo problema de permissão, mas em / var / lib / php / session /.

Para corrigi-lo, exclui o arquivo e reinicia php-fpm.

 rm -rf /var/lib/php/session/sess_p930fh0ejjkeeiaes3l4395q96 sudo service php5.6-fpm restart 

Agora tudo funciona bem.

Para mim, o problema parece ser um bug WHM! Eu tenho um monte de adicionar em domínios e todos funcionam bem, mas com um subdomínio traz esse erro.

Coisa estranha, mas se eu usar o URL completo com o domínio principal, ele funciona bem:

main-domain.com/my.subdomain.com

Se eu usar o subdomínio diretamente, ele traz “Permissão negada (13)”:

my.domínio.com

A coisa é toda a raiz de domínios addon é:

/ home / xx /

Mas para o meu subdomínio, não sei por que, a raiz é: (Eu não deveria ter access a esse diretório)

/

Então, está realmente tentando alcançar: / tmp em vez de / home / xx / tmp

O que também existe, mas não tem as permissions corretas

Para esclarecer isso, são exemplos de todo o caminho:

/ home / my-account / public_html

/ home / my-account / tmp

/ tmp

A solução que usei foi:

session_save_path (‘/ home / my-account / tmp’);

session_start ();

Eu inicialmente tive esse problema devido ao nginx possuir a localização / tmp e php-fpm estava sendo executado no usuário e grupo ‘apache’ devido ao http://www.conf. Troquei o usuário / grupo nesse arquivo e então funcionou bem. Você pode querer verificar < ?php echo exec('whoami'); ?> < ?php echo exec('whoami'); ?> para verificar.

Usando o PHP 5.6 já usei session_save_path () para apontar para um diretório dentro da estrutura do domínio. Funcionou bem até eu atualizar para o PHP 7.0, momento em que recebi o erro notado. No PHP.net eu encontrei vários comentários que indicavam que atribuir um caminho direto nem sempre funcionavam, então usei sua sugestão.

session_save_path(realpath(dirname($_SERVER['DOCUMENT_ROOT']) . '/../session'));

funcionou perfeitamente. Lembre-se de mudar /../session para a localização relativa do seu diretório de session atual.