Случается, когда вы пытаетесь вызвать функцию, которая еще не определена. Общие причины включают отсутствующие расширения и включают в себя объявление условной функции, функцию в объявлении функции или простые опечатки.
Пример 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, найдите информацию о том, почему, поскольку это может быть уже не нужно.
В случае отсутствия включено, обязательно включите файл, объявляющий функцию перед вызовом функции.
В случае опечаток исправить опечатку.
Вопросы, относящиеся
Кажется, нет никакого способа получить это сделанное использование svn встроенных инструментов. Как я решил его: Экспортируйте оба дерева и разность их diretly в файловой системе с помощью любимого различного инструмента. Это - так или иначе единственный способ сделать это: /
Если Вы используете --summarize
опция, то изменения свойства обозначаются во втором, а не первом столбце.
Т.е.
M URL -- indicates content change
M URL -- property change
MM URL -- content and property change
Это немного легче к grep. Я предполагаю, что у Вас мог быть двухэтапный процесс, если Вы хотите полную разность - первое использование подводит итог для нахождения файлов с довольным изменением, затем разность их.
Хорошая подсказка от JosephWatkins.
Вот команда для grep-junior-users:
svn diff A B --summarize | grep '^. '
grep ищет пространство как второй символ на строке.
Я не уверен, но простым 'svn разность | grep-iv "материал для игнорирования"' было бы обходное решение.
Можно установить свойство svn:ignore на файлах и каталогах, которые Вы хотите, чтобы svn разность проигнорировала.
Я написал сценарий для этого после того, как не смог найти его в Интернете.
Сценарий удаляет данные на основе массива регулярных выражений, введенных в верхней части сценария. В настоящее время он настроен для фильтрации изменений свойств, но может удалить любое изменение, которое соответствует ряду регулярных выражений.
Просто направьте вывод svn diff
в сценарий после того, как вы установите сценарий. Я помещаю фильтры в сценарий вместо параметров, потому что я всегда использую одни и те же фильтры.
Я выпустил его как GPLv2.
Вы можете передать вывод svn diff через 'filterdiff --clean', чтобы удалить любые посторонние строки, включая изменения свойств.