Ir para conteúdo

Arquivado

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

kikombat

Erro de session no php 7

Recommended Posts

Boa noite pessoal.

 

Fui fazer um teste com o tão falado php 7 e percebi que ele esta realmente bem mais rápido que seu antecessor, porém não consegui fazer uso de sessões. Um dado salvo em uma variável de sessão é sempre nulo quando se tenta acessar de outro arquivo.

Existe uma explicação para isso, uma correção, algum tutorial de migração?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mostre como fez. Em princípio, não mudou nada (que eu saiba) relacionado a sessions. Talvez seu script faça uso de algum recurso obsoleto que foi removido

 

Teste com um script mínimo e veja se o problema persiste.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mostre como fez. Em princípio, não mudou nada (que eu saiba) relacionado a sessions. Talvez seu script faça uso de algum recurso obsoleto que foi removido

 

Teste com um script mínimo e veja se o problema persiste.

Tente um bem basicão e não funcionou, veja:

 

testeA.php

<?php

session_start();
$_SESSION['teste'] = 'somente um teste';

testeB.php

<?php

session_start();
echo $_SESSION['teste'];

No php 7 isso não funciona, já em versões menores funciona perfeitamente

Compartilhar este post


Link para o post
Compartilhar em outros sites

estranho,estou usando php 7 e está funcionando normalmente.

 

já tentou reinstalar o php ?

Já reinstalei algumas vezes. Procurei no oráculo e nada, algumas pessoas com o mesmo problema e praticamente nenhuma resposta. Minha distro é o Fedora 23 com nginx, php-fpm e Mariadb.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Houve boatos sobre um bug no session, não fui muito atrás, mas talvez seja isso. Parece, também, que já está corrigido na última release.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você usa o XAMPP? Há várias questões relatadas sobre ele referente ao assunto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Houve boatos sobre um bug no session, não fui muito atrás, mas talvez seja isso. Parece, também, que já está corrigido na última release.

Parece ser mesmo esse o problema. A versão que usei foi a 7.0.4

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parece ser mesmo esse o problema. A versão que usei foi a 7.0.4

não sei por que,mas eu uso o xampp na versão 7.0.4 também e não está tendo nenhum problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde pessoal.

O problema parece ter sido solucionado.

Aparentemente a questão é que quando se faz a atualização para a nova versão alguns arquivos de configuração são mantidos. O que fiz foi parar os serviços nginx, php-fpm e Mariadb e depois procurar todos os pacotes relativos ao php , php-fpm e pear e desinstalar. Mas só isso não rersolveu a questão, quando instalados novamente as sessões nao funcionavam. Repeti o processo novamente e deletei também todos os arquivos .ini e todas as pastas criadas durante as instalações anteriores . Ai sim, quando instalei novamente e startei os serviços necessários tudo rodou corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bastava só você escolher uma pasta diferente.. assim você teria dois php.. mas já que ele estava bugado não precisava mesmo.. mas está resolvido.. então marque o tópico como resolvido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por clodoaldofc
      Boa tarde, pessoal!
      Sou novato em php .... venho do Lazarus;
      Estou tendo dificuldades em corrigir/converter esta função para o php 7.
      No php 5.6 este sistema funciona normalmente, porem quando esta no php 7 me retorna o erro : Uncaught Error: Cannot use object of type stdClass as array in 
      justamente na linha if (isset(this->db->data[0])) { $this->map($this->db->data[a]); } return $this->db->data;

      Se alguem puder me ajudar e se não for pedir muito, corrigir esta função pra eu ter como exemplo, agradeço.
       
          public function select($table, $where = '', $fields = '*', $order = '', $parametro = null, $limit = null) {           $this->db->query('SELECT ' . $fields . ' FROM ' . $table                 . (($where) ? ' WHERE ' . $where : '')                 . (($parametro) ? '  ' . $parametro : '')                 . (($order) ? ' ORDER BY ' . $order : '')                 . (($limit) ? ' LIMIT ' . $limit : ''))->fetchAll();           if (isset($this->db->data[0])) {             $this->map($this->db->data[0]);         }         return $this->db->data;
    • Por Fabio Carpi
      Hoje eu uso o try/catch na minha classe, mas ele não pega os warning...
      Eu já tentei o set_error_handler, mas ai ele pega os erros de todo o site...
    • Por Sapinn
      Estou tentando aprender PDO com MVC através de aulas no youtube. Estou com um problema no desenvolvimento de um framework quando chamo o parâmetro. Estou debugando o codigo para tentar achar o erro e parece que o paramentro chamado é o anterior.
      Quando uso o seguinte link http://localhost/framework_mvc/paginas e debugo aparece o seguinte:
       
       object(Rota)#1 (3) { ["controlador":"Rota":private]=> object(Paginas)#2 (0) { } ["metodo":"Rota":private]=> string(5) "index" ["parametros":"Rota":private]=> array(1) { [0]=> string(7) "paginas" } }
       
      Ate ai tudo certo. Quando uso o seguinte link http://localhost/framework_mvc/paginas/sobre e debugo aparece o seguinte: 
      object(Rota)#1 (3) { ["controlador":"Rota":private]=> object(Paginas)#2 (0) { } ["metodo":"Rota":private]=> string(5) "sobre" ["parametros":"Rota":private]=> array(1) { [0]=> string(7) "paginas" } }
       
      Quando o que deveria ocorrer era um erro e ser necessário que fosse adicionado mais um parametro na url ficando por exemplo assim:  http://localhost/framework_mvc/paginas/sobre/24.
       
      Codigos usados:
      Rota.php
      <?php class Rota{     private $controlador = 'Paginas';     private $metodo = 'index';     private $parametros = [];     public function __construct(){         $url = $this->url() ? $this->url() : [0];         if(file_exists('../app/Controllers/'.ucwords($url[0]).'php')):                 $this->controlador = ucwords($url[0]);                 unset($url[0]);         endif;                  require_once '../app/Controllers/'.$this->controlador.'.php';         $this->controlador = new $this->controlador;         if(isset($url[1])):             if(method_exists($this->controlador, $url[1])):                 $this->metodo = $url[1];                 unset($url[1]);             endif;         endif;         $this->parametros = $url ? array_values($url) : [];         call_user_func_array([$this->controlador,$this->metodo], $this->parametros);                var_dump($this);     }     private function url(){         $url = filter_input(INPUT_GET,'url',FILTER_SANITIZE_URL);         if(isset($url)):             $url = trim(rtrim($url,'/'));             $url = explode('/',$url);             return $url;         endif;     } }  
      Paginas.php
      <?php class Paginas{     public function index(){              }     public function sobre($id){         echo $id."<hr/>";     } } index.php
       
      <?php include './../app/Libraries/Rota.php'; ?> <!DOCTYPE html> <html lang="pt-br"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <title>Frameword de PHP7 - MVC</title> </head> <body>     <?php         $rotas = new Rota();     ?> </body> </html>  
      A video aula que estou assistindo é essa: 
       
    • Por Sapinn
      Estou com dificuldade para chamar um arquivo CSS usando a configuração de um arquivo php. O bootstrap também não surte efeito na paginas
       
      Vejam só
      Config.php
       
      <?php define('APP_NOME','Projeto GIBI'); define('URL','http://localhost/bora_php');  
       
      index.php
       
      <?php include './../app/configuracao.php'; include './../app/Libraries/Rota.php'; include './../app/Libraries/Controller.php'; ?> <!DOCTYPE html> <html lang="pt-br"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <link rel="stylesheet" href="<?=URL?>/public/css/estilos.css">     <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" >         <title><?= APP_NOME?></title> </head> <body>     <?php         $rotas = new Rota();     ?>     <script src="https://code.jquery.com/jquery-3.5.1.min.js" ></script> <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" ></script> <script src="<?=URL?>/public/css/script.js" ></script> </body> </html> estilo.css
      html{     background-color: red; }  
      Estou tentando seguir a padronização MVC(que por sinal eu tenho certa dificuldade), então não consigo achar onde estou errando
    • Por unset
      Olá a todos, estou com uma dúvida se alguém puder me ajudar.
       
      Qual seria a melhor forma de filtrar e como filtrar $_SERVER['REQUEST_METHOD']?
       
      Tenho um formulário simples
      <form action="deletar/10" method="post"> <input type="submit" class="btn btn-sm btn-danger" value="Deletar"> </form> Então recebo o id 10, ai como eu poderia validar esse formulário tendo certeza que ele veio pelo método post do meu servidor aplicando esse ou outro filtro ou método mais eficiente?
       
      Exemplo sem sucesso
      <?php public function deletar($id) { $id = filter_var($id, FILTER_VALIDATE_INT); $metodo = filter_var($_SERVER['REQUEST_METHOD'], FILTER_DEFAULT); if(isset($id) && isset($metodo)): echo 'pode salvar os dados'; endif; echo '<hr>'; var_dump($id); echo '<hr>'; var_dump($metodo); } ?>  
×

Informação importante

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