Ошибка сегментации (сбрасывается ядро) — Приложение CodeIgniter / 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)

У кого-нибудь есть предложения?

1

Решение

Хорошо, трата времени, публикуя это в конце, было довольно легко найти. По какой-то причине следующее не подходит для счастливой игры — я устанавливал защищенную переменную моего класса MY_Model напрямую, используя $ this-> config-> item (), и это вызывало проблему.

так что если я сделаю это:

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

Это волнуется. Но если я использую функцию установки:

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

Все в порядке. Пфф!

0

Другие решения

Я нашел ту же проблему.

Чтобы решить эту проблему, я настраиваю мою автозагрузку и загружаю мой конфигурационный файл.

В моем случае я создаю файл конфигурации: mongoci.php

Итак, в autoload.php я загружаю файл конфигурации:

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

Пожалуйста, попробуйте включить ваш файл конфигурации.

0

По вопросам рекламы [email protected]