2014-10-29 96 views
1

在我的本地主机上运行的一个CI应用程序内发生奇怪的错误。将PHP升级到5.5后出现错误。我的本地主机上的其他应用程序运行良好,可能是项目代码中的一些东西。任何人都可以提出什么我可以配置不同或什么可能夹住这个错误?我已经阅读了有关分段错误的各种其他职位,但一切都没有应用分段错误(核心转储)错误 - CodeIgniter应用程序/ Ubuntu 14.04/PHP 5.5

Apache的日志显示以下内容:PHP的版本

[core:notice] [pid 1696] AH00051: child pid 5390 exit signal Segmentation fault (11), possible coredump in /etc/apache2 

结果:

$ php -v 
    PHP 5.5.9-1ubuntu4.4 (cli) (built: Sep 4 2014 06:56:34) 
    Copyright (c) 1997-2014 The PHP Group 
    Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies 
    with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies 

如果我运行从应用程序带有strace的命令行(为了便于阅读而删减)

$ strace php index.php 
    .... 
    mmap(NULL, 14963, PROT_READ, MAP_SHARED, 3, 0) = 0x7f0089e52000 
    munmap(0x7f0089e52000, 14963)   = 0 
    close(3)        = 0 
    brk(0x1bee000)       = 0x1bee000 
    .... 
    brk(0x25ae000)       = 0x25ae000 
    --- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x7fff07b47ff8} --- 
    +++ killed by SIGSEGV (core dumped) +++ 
    Segmentation fault (core dumped) 

任何人都去有什么建议吗?

回答

0

好吧浪费时间发布这个到底是相当容易找到。出于某种原因,下面的内容并不能令人满意 - 我直接使用$ this-> config-> item()设置MY_Model类的受保护变量,这导致了问题。

所以,如果我这样做:

public function __construct() { 
     parent::__construct(); 
     $this->protected_var = $this->config->item('config_val','config_file'); 
    } 

这怪胎。但如果我使用setter函数:

$this->setter($val = false){ 
     if(!empty($val)){ 
      $this->protected_var = $val; 
     } 
    } 

很好。 PFF!

0

我发现了同样的问题。

为了解决这个问题我配置我的自动加载做负载我的配置文件。

在我来说,我创建一个配置文件:mongoci.php

所以,在autoload.php我加载配置文件:

$autoload['config'] = array('mongoci'); 

请尝试包括你的配置文件。