Случается, когда вы пытаетесь вызвать функцию, которая еще не определена. Общие причины включают отсутствующие расширения и включают в себя объявление условной функции, функцию в объявлении функции или простые опечатки.
Пример 1 - Декларация условной функции
$someCondition = false;
if ($someCondition === true) {
function fn() {
return 1;
}
}
echo fn(); // triggers error
В этом случае fn()
никогда не будет объявлено, потому что $someCondition
не соответствует действительности.
Пример 2 - Функция в объявлении функции
function createFn()
{
function fn() {
return 1;
}
}
echo fn(); // triggers error
В этом случае fn
будет объявлен только после вызова createFn()
. Обратите внимание, что последующие вызовы createFn()
вызовут ошибку об обновлении существующей функции.
Вы также можете увидеть это для встроенной функции PHP. Попробуйте найти функцию в официальном руководстве и проверьте, к какому «расширению» (к нему принадлежит PHP-модуль), и какие версии PHP поддерживают его.
В случае отсутствующее расширение, установите это расширение и включите его в php.ini. Обратитесь к Инструкции по установке в Руководстве по PHP для расширения вашей функции. Возможно, вы также сможете включить или установить расширение с помощью диспетчера пакетов (например, apt
в Debian или Ubuntu, yum
в Red Hat или CentOS ) или панель управления в среде общедоступного хостинга.
Если функция была введена в более новой версии PHP из того, что вы используете, вы можете найти ссылки на альтернативные реализации в руководстве или в разделе комментариев , Если он был удален из PHP, найдите информацию о том, почему, поскольку это может быть уже не нужно.
В случае отсутствия включено, обязательно включите файл, объявляющий функцию перед вызовом функции.
В случае опечаток исправить опечатку.
Вопросы, относящиеся
Похоже, что они изменили свой пользовательский интерфейс с тех пор, как были опубликованы инструкции Павла. Вот инструкции, которые я написал для своей команды. Они заменяют шаги 4-8 в посте Павла.
Чтобы профилировать ASP.NET приложение с помощью EQATEC, просто выберите папку bin приложения в настройках App Path:
App Path http://img191.imageshack.us/img191/9776/eqatecstep1.png
Затем нажмите кнопку Build в нижней части формы:
Build Button http://img339.imageshack.us/img339/6487/eqatecstep2.png
Затем загрузите приложение и перейдите на страницу, которую вы хотите профилировать. Перейдите на вкладку Run и нажмите кнопку Reset Counters:
Reset Counters http://img192.imageshack.us/img192/8250/eqatecstep3.png
Затем выполните действие, которое вы хотите профилировать. После этого нажмите кнопку Take Snapshot:
Take Snapshot http://img706.imageshack.us/img706/9778/eqatecstep4.png
После этого в нижнем списке появится отчет о снимке. Вы можете дважды щелкнуть на нем для просмотра:
View Report http://img263.imageshack.us/img263/4561/eqatecstep5.png
Это должно работать для веб-проектов ASP.NET:
Изменить: инструкции обновлены в соответствии с комментарием.
Возможно, вам понадобится скомпилированная версия вашего сайта (есть ли dll для сайта в папке bin или просто зависимости?) . Самый простой способ сделать это - опубликовать. (Просто щелкните правой кнопкой мыши сайт в Visual Studio). Тогда ответ Павла подойдет.