Странная ошибка в одном приложении 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)
У кого-нибудь есть предложения?
Хорошо, трата времени, публикуя это в конце, было довольно легко найти. По какой-то причине следующее не подходит для счастливой игры — я устанавливал защищенную переменную моего класса 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;
}
}
Все в порядке. Пфф!
Я нашел ту же проблему.
Чтобы решить эту проблему, я настраиваю мою автозагрузку и загружаю мой конфигурационный файл.
В моем случае я создаю файл конфигурации: mongoci.php
Итак, в autoload.php я загружаю файл конфигурации:
$autoload['config'] = array('mongoci');
Пожалуйста, попробуйте включить ваш файл конфигурации.