Plesk + Apache + PHP (FastCGI): Problemas constantes de permissões de sessão, conflitos entre HTTP / HTTPS

1

Acabei de transferir uma coleção de sites para um novo servidor, executando o Apache 2.2.3, o PHP 5.3 e o Plesk 10.1.1. Estou tendo problemas com permissões de arquivo em sessões PHP, que estão sendo armazenadas em /var/lib/php/session .

Eu originalmente defini as permissões para esta pasta:

drwxrwx--- 2 apache psacln 8192 Mar 22 23:25 session

Isso funcionou bem para as sessões HTTP . Os arquivos estavam sendo salvos nessa pasta com estas permissões:

-rw------- 1 client1        psacln 0 Mar 22 23:24 sess_507...
-rw------- 1 client2        psacln 0 Mar 22 23:25 sess_8o1...

O problema, no entanto, é que scripts PHP acessados via HTTPS não parecem ser executados pelo mesmo usuário client1 ou client2 . Excluí arquivos no diretório da sessão e acessei uma página de login via HTTPS para ver como as sessões estavam sendo salvas quando iniciadas por meio desse protocolo:

-rw------- 1 apache         apache 0 Mar 22 23:25 sess_507...

Assim, por qualquer motivo, as sessões iniciadas pelos clientes que navegam com HTTPS estavam sendo salvas por apache:apache , enquanto as sessões de clientes HTTP foram salvas com someclient:psacln .

O que eu gostaria de perguntar:

  1. Como posso evitar esse problema com permissões de sessão? Quando as sessões são criadas via HTTP não criptografado e um cliente visita uma parte HTTPS do site, erros de permissão são exibidos, pois apache:apache tenta acessar o salvamento da sessão criado por someclient:psacln . O contrário também é verdade.
    1. Posso alterar o usuário que executa o servidor Apache HTTPS, por meio do Plesk ou da linha de comando?
    2. Se não, posso salvar sessões do PHP com rw-rw---- permissões e, em seguida, adicionar apache ao grupo psacln ?
    3. Alguma outra sugestão sobre como corrigir esse problema?
por Jon Gauthier 23.03.2011 / 04:43

1 resposta

2

Altere seu arquivo /etc/php.ini :

session.save_path = "0;0660;/var/lib/php/session"

PHP 5.3.5 O mabe salvará o seu arquivo de sessão como -rw-r-- , se o fizer, então você precisa editar o seu aplicativo, use o código apenas start_session() :

usermod(0);
start_session();

então, ele salvará os arquivos da sessão com a permissão -rw-rw-- .

Você também precisará alterar seu grupo apache para psacln (seu servidor talvez esteja executando como apache: apache porque alguns atualizados do apache sobrescreveram o arquivo de configuração).

Edite seu httpd.conf

mudar de:

user = apache
group = apache

Para:

user = apache
group = psacln

Agora, se você mudar de mod_php para FastCGI e vice-versa, você não terá conflito com suas permissões de sessão.

Não se esqueça de reiniciar seu servidor apache após as alterações /etc/init.d/httpd restart

Se você estiver usando uma distro debian, seu comando daemon será /etc/init.d/apache restart e seus arquivos de configuração estarão dentro de uma pasta sinônima como /etc/php/apache/php.ini e /etc/apache/httpd.conf ou /etc/apache/apache.conf

    
por 03.08.2011 / 07:50