Dubrowsky
Хроники одного дупла
Блогово  →  WebDev  → 

Base lambda function for closure not found

13 Марта 2014 года

При отладке софтины, которую я невозбранно программирую в данный момент, столкнулся с таким вот неприятным Fatal error:

Base lambda function for closure not found

Гуглится быстро, но на память записываю.

1. Когда происходит


Происходит при подключении конфига, возвращающего массив, внутри которого в одном из индексов сидит анонимная функция. Примерно так:

<?
return array(
	'install' => function() {
		// do smth
	}
);

Что важно, этот конфиг за один прогон скрипта подключается более одного раза (не спрашивайте зачем, если в двух словах - это повторяющаяся часть нескольких разных конфигов).

2. Из-за чего происходит

Это бага где-то в недрах APC. В увлекательном треде про этот баг есть комменты, примерно описывающие механику. Конкретно у меня APC 3.1.13, то есть последняя бета с PECL

3. Как лечить на уровне окружения

В конце увлекательного треда по ссылке выше в конце появляется патч. Проблема в том, что он появляется на пару месяцев позже даты последнего релиза (который у меня). 

Соответственно, можно выполнить упражнение для красноглазых ниндзя, забрав актуальные исходники git.php.net, где есть вожделенный фикс - но мне как-то не хочется.

Кроме того, в обсуждении баги предлагают выставить настройку apc.write-lock = Off. Учитывая, что баг воспроизводится очень через раз, не готов проверять.

4. Как лечить на уровне кода

Поскольку окружение у меня очень непредсказуемое, придется что-то делать с кодом.

Очевидно, надо не допускать ситуации, когда файл, в котором определяется лямбда, подключается больше одного раза. Чтобы совсем не лишиться возможности использовать удобную технику $cfg = include 'cfg.php', я наверное тупо избавлюсь от анонимных функций, переложив их объявление в отдельный файл. Примерно так:

<?
require_once('install_callback.php');
return array(
    'install' => 'my_module_install_callback'
);

Всем привет :)

Написать коммент: памятка постеру

 

Крутые посты wtf??? →

06.03.2008 · 29 камментов · рейтинг 7.59
29.08.2007 · 28 камментов · рейтинг 7.27
30.01.2013 · 13 камментов · рейтинг 7.13
28.03.2008 · 23 каммента · рейтинг 6.78
19.01.2008 · 20 камментов · рейтинг 6.26

Последне камменты

16.02.2018  CrazyMiheyКак изменить оболочку (shell) по умолчанию для пользователя Linux: Ну и сколько Страждущих ломанулись подбирать Парол...
28.01.2018  Привет Ера Связь: 04acw1pf8fwgmqhpfp22t6398o4zszhe3x9lj7luwizkodzt7...
26.01.2018  JasonСвязной.Банк закрыл возможность пополнения WebMoney: Hello Здравствуйте. Сервис продвижения в социальны...
24.01.2018  Annaтам же: Hi Здравствуйте. Сервис продвижения в социальных с...
14.12.2017  БраузерНовый Яндекс.Браузер - браузер "Yandex" (отзыв / обзор): Я предпочитаю использовать яндекс браузер

Статсы