分段故障(核心转储)错误-CodeIgniter应用程序/Uubuntu 14.04/PHP 5.5


Segmentation fault (core dumped) error - CodeIgniter application / Ubuntu 14.04 / PHP 5.5

我在本地主机上运行的一个CI应用程序中出现奇怪错误。将PHP升级到5.5后出现错误。本地主机上的其他应用程序运行良好,很可能是项目代码中的某些内容。有人能建议我可以用不同的方式配置什么吗?或者是什么导致了这个错误?我已经阅读了关于分段故障的各种其他帖子,但没有任何应用

apache日志显示以下内容:

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

php版本的结果:

    $ 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)

有人有什么建议吗?

好吧,浪费时间发布这篇文章最终很容易找到。出于某种原因,以下内容不适合愉快的游戏-我直接使用$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!

我发现了同样的问题。

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

在我的例子中,我创建了一个配置文件:mongoci.php

因此,在autoload.php中,我加载配置文件:

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

请尝试包含您的配置文件。