Solucionado (ver solução)
Solucionado
(ver solução)
9
respostas

Erro ao carregar a session

estou tendo um probleminha na hora quecarrego a session

A PHP Error was encountered

Severity: Warning

Message: mkdir(): Invalid path

Filename: drivers/Session_files_driver.php

Line Number: 117

Backtrace:

File: /Users/ramiresmoreira/Google Drive/sites/mercado/application/controllers/Produtos.php
Line: 11
Function: __construct

File: /Users/ramiresmoreira/Google Drive/sites/mercado/index.php
Line: 292
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: Cannot modify header information - headers already sent by (output started at /Users/ramiresmoreira/Google Drive/sites/mercado/system/core/Exceptions.php:272)

Filename: core/Common.php

Line Number: 573

Backtrace:

An uncaught Exception was encountered

Type: Exception

Message: Session: Configured save path '' is not a directory, doesn't exist or cannot be created.

Filename: /Users/ramiresmoreira/Google Drive/sites/mercado/system/libraries/Session/drivers/Session_files_driver.php

Line Number: 119

Backtrace:

File: /Users/ramiresmoreira/Google Drive/sites/mercado/application/controllers/Produtos.php
Line: 11
Function: __construct

File: /Users/ramiresmoreira/Google Drive/sites/mercado/index.php
Line: 292
Function: require_once
9 respostas

Olá Ramires, tudo bem? Pode nos mostrar como está o código desse seu arquivo?

Veja se não existe nenhum espaço antes da tag <?php ou se não existe nenhum output sendo escrito antes de usar o header.

já verifiquei se existe espaço, mas não há, segue a baixo o código exatamente como ele está.

controller produtos

<?php 
defined('BASEPATH') OR exit('Você não tem permissão para acessar este arquivo');
/**
* 
*/
class Produtos extends CI_Controller
{

    function __construct(){
        parent::__construct();
        $dados = array('controllerName' => 'Produtos');
        $this->load->view("includes/header",$dados);
    }

    function index()
    {    
        $this->load->model('produtos_model','banco');
        $produtos = $this->banco->buscaTodos();
        $dados = array('produtos' => $produtos);
        $this->load->helper('moeda'); 
        $this->load->view('produtos/formularios/cadastro');
        $this->load->view('produtos/index',$dados);
    }

    public function cadastrar(){
        $this->load->model('produtos_model','banco');
        $produto = $this->pegaDados();
        $this->produtos_model->buscaTodos();
        if($this->produtos_model->salva($produto))
        redirect('/');
    }

    public function mostra($id){
        $this->load->model('produtos_model');
        $produto = $this->produtos_model->buscaPorId($id);
        $dados = array('produto'=>$produto);
        $this->load->helper(array('moeda','typography'));
        $this->load->view('produtos/mostra', $dados);
    }
    //inicio métodos privadas
    private function pegaDados(){
    return $produto = array(
            'nome'=> $this->input->post('nome'),
            'descricao'=> $this->input->post('descricao'),
            'preco'=> $this->input->post('preco')
            );
    }
    //fim métodos privadas
}
?>

produtos_model

<?php 
/**
*
*/
class Produtos_model extends CI_Model    
{

    function buscaTodos()
    {    
        return $this->db->get_where("produtos", array('lixeira'=>0))->result_array();
    }

    function buscaPorId($id)
    {
        return $this->db->get_where("produtos", array('id'=>$id,'lixeira'=>0))->row_array();
    }

    function salva($produto)
    {
        $this->db->insert('produtos',$produto);
    }
}
?>

em que momento ele começou a dar esse erro?

na realidade esse nao é o erro me desculpe, o erro é:

A PHP Error was encountered

Severity: Warning

Message: mkdir(): Invalid path

Filename: drivers/Session_files_driver.php

Line Number: 117

Backtrace:

File: /Users/ramiresmoreira/Google Drive/sites/mercado/application/controllers/Produtos.php
Line: 10
Function: __construct

File: /Users/ramiresmoreira/Google Drive/sites/mercado/index.php
Line: 292
Function: require_once
A PHP Error was encountered

Severity: Warning

Message: Cannot modify header information - headers already sent by (output started at /Users/ramiresmoreira/Google Drive/sites/mercado/system/core/Exceptions.php:272)

Filename: core/Common.php

Line Number: 573

Backtrace:
An uncaught Exception was encountered

Type: Exception

Message: Session: Configured save path '' is not a directory, doesn't exist or cannot be created.

Filename: /Users/ramiresmoreira/Google Drive/sites/mercado/system/libraries/Session/drivers/Session_files_driver.php

Line Number: 119

Backtrace:

File: /Users/ramiresmoreira/Google Drive/sites/mercado/application/controllers/Produtos.php
Line: 10
Function: __construct

File: /Users/ramiresmoreira/Google Drive/sites/mercado/index.php
Line: 292
Function: require_once

e ocorre no momento em que carrego a session. config->autoload e $autoload['libraries'] = array('database', 'session'); ou $this->load->library(' session') as duas formas da erro.

o erro anterior que postei ocorre quando eu tento utilizar a função redirect() do helper url sendo que as outras funções do helper estão funcionando, mas vamos por parte, primeiramente o erro que carrega a session ele informa como se fosse um problema no core do code igniter.

mesmo nao sendo uma boa prática eu dei permissão 777 na pasta application

sh-3.2# ls -la application/
total 40
drwxrwxrwx@ 17 ramiresmoreira  staff   578 14 Nov 13:10 .
drwxrwxrwx@ 15 ramiresmoreira  staff   510 17 Nov 14:18 ..
-rwxrwxrwx@  1 ramiresmoreira  staff  8196 14 Nov 13:14 .DS_Store
-rwxrwxrwx@  1 ramiresmoreira  staff    79 14 Nov 13:24 .htaccess
drwxrwxrwx@  4 ramiresmoreira  staff   136 31 Out 10:37 cache
drwxrwxrwx@ 17 ramiresmoreira  staff   578 31 Out 10:37 config
drwxrwxrwx@  7 ramiresmoreira  staff   238 16 Nov 19:55 controllers
drwxrwxrwx@  3 ramiresmoreira  staff   102 31 Out 10:37 core
drwxrwxrwx@  4 ramiresmoreira  staff   136 14 Nov 16:19 helpers
drwxrwxrwx@  3 ramiresmoreira  staff   102 31 Out 10:37 hooks
-rwxrwxrwx@  1 ramiresmoreira  staff   131 31 Out 10:37 index.html
drwxrwxrwx@  5 ramiresmoreira  staff   170 14 Nov 13:14 language
drwxrwxrwx@  6 ramiresmoreira  staff   204 14 Nov 17:09 libraries
drwxrwxrwx@  3 ramiresmoreira  staff   102 31 Out 10:37 logs
drwxrwxrwx@  5 ramiresmoreira  staff   170 15 Nov 09:41 models
drwxrwxrwx@  3 ramiresmoreira  staff   102 31 Out 10:37 third_party
drwxrwxrwx@  9 ramiresmoreira  staff   306 15 Nov 10:02 views

o mesmo para a pasta system

drwxrwxrwx@ 11 ramiresmoreira  staff   374 14 Nov 13:10 .
drwxrwxrwx@ 15 ramiresmoreira  staff   510 17 Nov 14:18 ..
-rwxrwxrwx@  1 ramiresmoreira  staff  6148 14 Nov 13:10 .DS_Store
-rwxrwxrwx@  1 ramiresmoreira  staff   117 31 Out 10:37 .htaccess
drwxrwxrwx@ 21 ramiresmoreira  staff   714 31 Out 10:37 core
drwxrwxrwx@ 11 ramiresmoreira  staff   374 31 Out 10:37 database
drwxrwxrwx@  4 ramiresmoreira  staff   136 31 Out 10:37 fonts
drwxrwxrwx@ 24 ramiresmoreira  staff   816 31 Out 10:37 helpers
-rwxrwxrwx@  1 ramiresmoreira  staff   131 31 Out 10:37 index.html
drwxrwxrwx@  4 ramiresmoreira  staff   136 31 Out 10:37 language
drwxrwxrwx@ 29 ramiresmoreira  staff   986 31 Out 10:37 libraries

e seus respectivos sub-diretórios.

quando eu nao carrego a session tudo funciona perfeitamente.

então dando permissão funcionou? Talvez seja por você estar colocando na pasta do Google Drive, ou algo assim.

não, mesmo dando permissão não funcionou, não sei se devo acreditar ser no google drive, pois não há restrição ou autenticação para acesso a pasta.

Eu também baixei o codeIgniter novamente, e so modifiquei as configurações sem fazer nem um código e deu o mesmo erro, vamos fazer o seguinte se você concordar lógico, baixe o codeIgniter versao 3.0.3 e tenta carregar a session, se der erro provavelmente seja alguma coisa no core, se não, deve ser alguma configuração no meu mac, mas gostaria de tirar essa dúvida antes de tentar achar esse erro.

solução!

Olá Rodrigo, encontrei o problema, e que em config.php tem que ser setado o diretório da session, como isso não foi falado no video e funcionou, suspeito ser novidade da versao. vem explicando no arquivo de configuração.

'sess_save_path'
|
|    The location to save sessions to, driver dependent.
|
|    For the 'files' driver, it's a path to a writable directory.
|    WARNING: Only absolute paths are supported!
|
|    For the 'database' driver, it's a table name.
|    Please read up the manual for the format with other session drivers.
|
|    IMPORTANT: You are REQUIRED to set a valid save path!

Ele é bem claro que tem que ser o caminho completo o meu ficou assim. e deu certo \o/... Obrigado pela atenção.

$config['sess_save_path'] = '/Users/ramiresmoreira/Google Drive/sites/mercado/application/session';