As permissões corretas para nós, onde
chown -R nobody:nogroup /var/lib/php/session
como php-cgi
é executado como nobody
, mesmo que o NGinx seja executado como usuário nginx
Estou tendo problemas para obter vários scripts em execução porque o PHP-FPM não pode gravar em minha pasta de sessão:
"2009/10/01 23:54:07 [error] 17830#0: *24 FastCGI sent in stderr: "PHP Warning: Unknown: open(/var/lib/php/session/sess_cskfq4godj4ka2a637i5lq41o5, O_RDWR) failed: Permission denied (13) in Unknown on line 0 PHP Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in Unknown on line 0" while reading upstream"
Obviamente, esta é uma questão de permissão; o proprietário / grupo da minha pasta de sessão é o usuário do servidor, NGINX. O PHP-FPM é executado como nobody
e, portanto, adicioná-lo ao grupo nginx não é tão trivial.
Uma solução temporária é definir as permissões de /var/lib/php/session
para 777
- tenho a sensação de que essa não é a "melhor prática".
Qual é a melhor prática quando você precisa atribuir um daemon para gravar o acesso a uma pasta, mas ela está sendo executada como nobody
?
As permissões corretas para nós, onde
chown -R nobody:nogroup /var/lib/php/session
como php-cgi
é executado como nobody
, mesmo que o NGinx seja executado como usuário nginx
Às vezes, quando você atualiza o sistema, o grupo de /var/lib/php/session
é alterado para o apache.
Tente executar sudo chgrp nginx /var/lib/php/*
em vez de definir permissões para 777, o que é uma prática ruim.
Isso funcionou para mim pelo menos.
Use a diretiva /etc/php.ini
session.save_path .
A temporary solution is to set the permissions of /var/lib/php/session to 777 - I have a feeling that's not the "best practice" though.
"Se você deixar este conjunto em um diretório legível pelo mundo, outros usuários no servidor poderão seqüestrar sessões obtendo a lista de arquivos nesse diretório."
Eu tive que criar uma pasta com direitos 0700 em / var / lib / php / session para cada conjunto php-fpm.
O proprietário desta pasta é usuário e grupo do conjunto php-fpm.
E / var / lib / php / session agora 0777.
Acho que esse método é mais seguro. Apenas o usuário do pool php-fpm verá essas sessões.
Eu tive o mesmo problema e resolvi isso. Eu fui para /tmp
(é onde meus arquivos ses_ * estão) e deletei todos eles. Depois disso tudo deu certo.
Tão perto quanto eu poderia dizer que o sistema estava tentando escrever em arquivos antigos bloqueados.
O problema ocorreu depois que eu estava jogando com php.ini
. Eu perdi alguns anos da minha vida, mas acabei encontrando a solução.
A maneira correta deve ser alterar a propriedade da pasta de sessão para nginx. Entretanto, o PHP-FPM não roda usando o usuário nginx por padrão. Ele usa o apache por padrão.
Com isso dito, você deve alterar o usuário que é usado pelo PHP-FPM editando /etc/php-fpm.d/www.conf
.
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
Reinicie o PHP-FPM e você deve estar pronto.
service php-fpm restart
O local do caminho da sessão do PHP pode ser encontrado em /etc/php.ini
under session.save_path
. /var/lib/php/session
é o padrão.
Comando para atualizar a propriedade e o grupo da pasta de sessão do php
chown -R nginx:nginx /var/lib/php/session
E você deve ser bom mesmo com chmod de 700
.
Diretório / var / lib / php / sessions deve ter permissões de bits fixos.
sudo chmod 1773 /var/lib/php/sessions
ls -al /var/lib/php/
drwxr-xr-x 4 root root .
drwxr-xr-x 51 root root ..
drwxr-xr-x 3 root root modules
drwx-wx-wt 2 root root sessions
Com base na resposta do @Judder , para que funcione, precisei adicionar o seguinte comando para conceder leitura e gravação às permissões > nobody e nogroup :
chown -R nobody:nogroup /var/lib/php/session
sudo chmod -R ug+rw /var/lib/php/sessions
chmod mudará as permissões na pasta dada
O -R aplicará as mesmas permissões às pastas e arquivos criados dentro da pasta especificada
u para o usuário
g para o grupo
r para permissão de leitura
w para permissão de gravação