2014-10-29 24 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'); 

請嘗試包括你的配置文件。