Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gildonildo

Warning: session_start() - Codigo para analise

Recommended Posts

Olá pessoal,

Sei que tem vários topicos sobre o assunto mas eu já verifiquei tudo oque eu podia, já entrei em contato com o pessoal do server, li muuuito em fóruns, estou a quase 15 dias tentando resolver o problema e não consegui diagnosticar!

 

Já chequei as permissoes da pasta /tmp tambem.

 

 

SEGUE OS ERROS:

Warning: session_start() [function.session-start]: open(/tmp/sess_1211140002, O_RDWR) failed: Permission denied (13) in /home/xxx/public_html/index.php on line 35

 

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/xxx/public_html/index.php:35) in /home/xxx/public_html/index.php on line 35

 

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/xxx/public_html/index.php:35) in /home/xxx/public_html/index.php on line 35

 

 

E ESTES ERROS FICAM NO RODAPE:

 

Warning: Unknown: open(/tmp/sess_1211140002, O_RDWR) failed: Permission denied (13) in Unknown on line 0

 

Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0

 

 

 

MEU CODIGO:

<?php

session_start();

$chegaIDinicial = session_id();

 

//GERA OUTRO ID DE SESSAO E RECOMECA SESSAO

if($_SESSION[destuir_recomecar] == "sim" || strlen($chegaIDinicial)>20 || $_GET["acao"]=="destroy"){

$_SESSION = array();

if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time()-42000, '/'); }

session_destroy();

 

include("banco_config.php");

$db = mysql_connect("localhost", "$usuario", "$senha");

mysql_select_db("$banco",$db);

$senha = ""; $usuario = ""; $banco = ""; //libera senha do banco pra nao ter problemas futuros

 

//********************************************************

//COLOCA DATA E NOVO NUMERO SEQUENCIAL NO SQL

//PARA O PESSOAL DO FORUM ENTENDER: estou gerando um numero de session_id sequencial que uso como numero do pedido e ID para o carrinho na minha loja virtual

 

$ATUALL = mysql_query("SELECT * FROM cod_compra_seq WHERE id='1'", $db); //PEGA DADOS ATUAIS

while($ATUALL2 = mysql_fetch_array($ATUALL)){

$sequencialAtual = $ATUALL2['sequencial'];

$dataAtual = $ATUALL2['data'];

}

 

if($dataAtual < date("ymd")) { mysql_query("UPDATE cod_compra_seq SET sequencial='1', data='".date("ymd")."' WHERE id='1'", $db); } //SE JA ESTIVERMOS NUM DIA SEGUINTE, ATUALIZA DATA e RESETA SEQUENCIAL

mysql_query("UPDATE cod_compra_seq SET sequencial=(sequencial+1), data='".date("ymd")."' WHERE id='1'", $db); //ATUALIZA +1 PRA NOVA SESSAO

 

$ATUALL = mysql_query("SELECT * FROM cod_compra_seq WHERE id='1'"); //PEGA DADOS ATUAIS COM OS VALORES CORRIGIDOS

while($ATUALL2 = mysql_fetch_array($ATUALL)){

$sequencialAtual = $ATUALL2['sequencial'];

$dataAtual = $ATUALL2['data'];

}

 

$SID_IDID = date("ymd").str_pad($sequencialAtual, 4, "0", STR_PAD_LEFT); //Gera COD da COMPRA = DATA+SEQde4DIG

session_id($SID_IDID);

session_start(); //Esta é a linha 35 mensionada nos erros

}

 

$pag = $_GET["p"]; //captura pagina a exibir

?>

 

ADICIONANDO INFORMAÇÃO:

Esse erro acontece frequentemente, porém, algumas vezes, dando um refresh na pagina algumas vezes com F5 mesmo, o erro pára de ser gerado.

 

Levantei a hipotese de ser problema no server!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente isso:

 

<?php
ob_start();
session_start();
$chegaIDinicial = session_id();

//GERA OUTRO ID DE SESSAO E RECOMECA SESSAO
if($_SESSION[destuir_recomecar] == "sim" || strlen($chegaIDinicial)>20 || $_GET["acao"]=="destroy"){
$_SESSION = array(); 
if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time()-42000, '/'); }
session_destroy();

include("banco_config.php");
$db = mysql_connect("localhost", "$usuario", "$senha");
mysql_select_db("$banco",$db);
$senha = ""; $usuario = ""; $banco = ""; //libera senha do banco pra nao ter problemas futuros

//********************************************************
//COLOCA DATA E NOVO NUMERO SEQUENCIAL NO SQL 
//PARA O PESSOAL DO FORUM ENTENDER: estou gerando um numero de session_id sequencial que uso como numero do pedido e ID para o carrinho na minha loja virtual

$ATUALL = mysql_query("SELECT * FROM cod_compra_seq WHERE id='1'", $db); //PEGA DADOS ATUAIS
while($ATUALL2 = mysql_fetch_array($ATUALL)){
$sequencialAtual = $ATUALL2['sequencial'];
$dataAtual = $ATUALL2['data'];
}

if($dataAtual < date("ymd")) { mysql_query("UPDATE cod_compra_seq SET sequencial='1', data='".date("ymd")."' WHERE id='1'", $db); } //SE JA ESTIVERMOS NUM DIA SEGUINTE, ATUALIZA DATA e RESETA SEQUENCIAL
mysql_query("UPDATE cod_compra_seq SET sequencial=(sequencial+1), data='".date("ymd")."' WHERE id='1'", $db); //ATUALIZA +1 PRA NOVA SESSAO

$ATUALL = mysql_query("SELECT * FROM cod_compra_seq WHERE id='1'"); //PEGA DADOS ATUAIS COM OS VALORES CORRIGIDOS
while($ATUALL2 = mysql_fetch_array($ATUALL)){
$sequencialAtual = $ATUALL2['sequencial'];
$dataAtual = $ATUALL2['data'];
}

$SID_IDID = date("ymd").str_pad($sequencialAtual, 4, "0", STR_PAD_LEFT); //Gera COD da COMPRA = DATA+SEQde4DIG
session_id($SID_IDID);
session_start(); //Esta é a linha 35 mensionada nos erros
}

$pag = $_GET["p"]; //captura pagina a exibir

ob_flush()
?>

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Warning: session_start() [function.session-start]: open(/tmp/sess_1211140002, O_RDWR) failed: Permission denied (13) in /home/xxx/public_html/index.php on line 35

A mensagem de erro diz: "Permissão negada" (para escrita diretório /tmp)

 

Os erros seguintes provavelmente se originaram do output do primeiro erro.

 

Caso não tenha acesso ou permissões para configurar as permissões da referida pasta, tente configurar um caminho específico onde serão gravadas as sessões e, obviamente necessita setar permissões de leitura e escrita

 

Exemplo de como configurar um caminho específico em tempo de execução:

ini_set( 'session.save_path', '/www/website/sessions/');

Compartilhar este post


Link para o post
Compartilhar em outros sites

mano faz o seguinte delete o cache de seu navegador pode ser isso se for no firefox opcoes>Avançado>limpa cache

 

 

delete e renicie o seu navegador

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pelas respostas a todos.

 

Mas nenhuma das alternativas resolveu o problema.

 

Eu acho interessante que as vezes funciona bem (conforme o esperado e sem erros) e derepente dá esse erro... e depois de atualizar a pagina (com F5 mesmo) volta a funcionar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Henrique.

 

Muito bom seu blog, já foi pros meus favoritos.

 

Porém, eu já chequei essas possibilidades. Acredito estar tudo certo com meu codigo.

 

Estou pirando... he he...

Compartilhar este post


Link para o post
Compartilhar em outros sites

"Permission denied"

se essa mensagem de erro aparece "exporadicamente" para o mesmo script é estranho ... não faz muito sentido o seu relato.. a não ser que tenha alguem ou algo mexendo nas permissões de usuários do server sem você saber.. ou você não está contando a estória direito. <_<

 

Eu como técnico não aceitaria algo vago assim.... mas você quem sabe..

 

Algumas referências:

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

 

Apenas para desencargo de consciência..

http://stackoverflow.com/questions/6821532/php-warning-permission-denied-13-on-session-start

 

Mais um monte de links:

http://bit.ly/T9M0OF

 

 

 

desclpe pela insistência ou qq coisa..

falowss

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pessoal...

 

Bru_ce = Uso o FlashFXP

 

hinom = É exatamente oque acontece, "exporadicamente" é a palavra que descreve bem meu problema!

 

Estou fazendo um teste, talvez irá resolver, temo que o PHP está mantendo o session_id após finalizar.

Minha dúvida: session_destroy apaga o session_id ???

Ou estaria faltando um session_regenerate_id(true) no meu code???

 

Grato aos que estão colaborando!

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso destrói as sessões atuais.

<?php

session_destroy();

?>

 

Baixa o filezilla, e define para arquivos permissão 644 e diretórios 755.

 

Logo depois assim:

 

<?php
session_destroy();
session_start();

// AQUI SEUS CÓDIGOS

?>

 

Você libera as sessões, depois "starta" elas !

 

Veja se resolve !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bru_ce Farei o teste com o filezila, porem, as permissoes de arquivos e pastas são estas para meu software também.

 

e a pasta /tmp já tentei alterar para 777 ou 755, e o erro persiste de vez enquando!

 

PERGUNTA: No code abaixo, que resultado se espera do server: id1 e id2 iguais ou direfentes?

//SESSAO 1 - ID INICIAL
session_start();
$chegaIDinicial1 = session_id();

//DESTROY
$_SESSION = array();
session_destroy();

//RECOMECA NOVA SESSAO
session_start();
$chegaIDinicial2 = session_id();

echo "id1=".$chegaIDinicial1."<br />";
echo "id2=".$chegaIDinicial2."<br />";
echo "session_id=".session_id()."<br />"; 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esqueça todas as dicas sobre session_destroy, session_regenerate_id, etc. Foque, exclusivamente, na dica do hinom. O problema não está no seu código, mas na configuração do servidor. Talvez algum sobrinho o esteja administrando.

 

Para resolver seu problema, entre em contato com o host. Para contornar seu problema, faça o seguinte:

 

/**
* Wrapper to session_start. Creates a session or resumes the current one based
* on a session identifier passed via a GET or POST request, or passed via a cookie. 
*
* @return bool This function returns TRUE if a session was successfully started,
*          	otherwise FALSE. 
* @see session_start()
* 
* TODO: Xingar a mãe do administrador do host.
*/
function session_start_with_fallback() {
$tempdir = session_save_path();

if (!is_dir($tempdir) || ($writable = is_writable($tempdir)) === false) {
	$created = false;

	if (!$writable) {
		$docroot = realpath(dirname(__FILE__));

		if (isset($_SERVER['DOCUMENT_ROOT'])) {
			$docroot = realpath($_SERVER['DOCUMENT_ROOT']);
		}

		$tempdir = $docroot . DIRECTORY_SEPARATOR . basename($tempdir);
	}

	$created = mkdir($tempdir);

	if ($created) {
		session_save_path($tempdir);
	} else {
		trigger_error('Cannot create session save path directory', E_USER_ERROR);
	}
}

return session_start();
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.