AWS EC2 PHP session_start com permissão negada

1

Eu tenho um problema estranho relacionado ao PHP e o caminho para salvar a sessão. Eu configurei no meu php.ini o session.save_path="/ tmp", e eu sei que está configurado corretamente, pois no servidor eu poderia digitar o seguinte comando e o resultado do comando parece estar bem.

$ php -i | grep session.save_path
session.save_path => /tmp => /tmp

No entanto, quando estou tentando iniciar uma sessão a partir do código php, estou recebendo o seguinte erro:

Warning: session_start(): open(/var/lib/php/session/sess_7ktfe84jqca3ga6ftk6fsrurv6, O_RDWR) failed: Permission denied (13)

Então o caminho aqui é totalmente diferente de / tmp configurado no php.ini.

Existe algum motivo para esse comportamento? Verifiquei no meu código que não há nenhuma chamada para session_save_path para alterar o caminho de salvamento padrão.

O servidor com este problema é uma instância do AWS EC2.

    
por alvarolb 02.12.2013 / 12:10

4 respostas

0

Encontrei o problema e parece um problema de configuração. Eu abri um phpinfo no servidor e vejo o seguinte:

Directive            Local Value            Master value
session.save_path   /var/lib/php/session    /tmp

O valor local que aponta / var / lib / php / session parece ser o problema, pois este diretório não é gravável pelo usuário do servidor. Eu não sabia nada sobre valor local e mestre, e depois de algumas escavações no google eu li o seguinte:

"Master Value" (from php.ini) could be overridden with "Local Value" in httpd.conf, .htaccess or other Apache configuration with php_value directive.

Então, depois de olhar em volta dos arquivos do servidor eu encontrei o /etc/httpd/conf.d/php.conf que contém:

#
Apache specific PHP configuration options
those can be override in each configured vhost
#
php_value session.save_handler "files"
php_value session.save_path "/var/lib/php/session"

Portanto, existe o problema, este php.conf está sobrescrevendo a configuração padrão do php.ini. Eu posso comentar esta última linha com "#" e reiniciar o servidor e tudo está funcionando como esperado novamente.

Espero que isso ajude.

    
por 02.12.2013 / 18:29
2

Você também pode adicionar isso ao seu arquivo project.config do beanstalk elástico:

"/etc/httpd/conf.d/php.conf":     conteúdo: |       php_value session.save_path "/ tmp"

que apenas definirá o caminho de salvamento da sessão para você

    
por 20.03.2014 / 14:11
0

Você também pode se conectar através do ssh (se você configurou a chave / par inicialmente) e alterar a permissão da pasta para que seja de propriedade do usuário webpp

    
por 12.12.2013 / 17:04
0

A solução rápida para esta é colocar o seguinte antes de seu session_start ();

<?php
$dir = sys_get_temp_dir();
session_save_path($dir);
?>

... tirado daqui .

    
por 06.02.2014 / 11:40