Случается, когда вы пытаетесь вызвать функцию, которая еще не определена. Общие причины включают отсутствующие расширения и включают в себя объявление условной функции, функцию в объявлении функции или простые опечатки.
Пример 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, найдите информацию о том, почему, поскольку это может быть уже не нужно.
В случае отсутствия включено, обязательно включите файл, объявляющий функцию перед вызовом функции.
В случае опечаток исправить опечатку.
Вопросы, относящиеся
Большинство команд Подрывной деятельности берет --username
опция определить имя пользователя, которое Вы хотите использовать для репозитория. Подрывная деятельность помнит последнее имя пользователя репозитория и пароль, используемый в каждой рабочей копии, что означает, среди прочего, что, если Вы используете svn checkout --username myuser
, Вы никогда не должны определять имя пользователя снова.
, Поскольку Kamil Kisiel говорит , когда Подрывная деятельность получает доступ к репозиторию непосредственно от файловой системы (то есть, URL репозитория имеет форму file:///path/to/repo
или file://file-server/path/to/repo
), это использует Ваши полномочия файловой системы получить доступ к репозиторию. И когда Вы подключение через SSH туннелирование (svn+ssh://server/path/to/repo
), SVN использует Ваши полномочия FS на сервер , как определено Вашим входом в систему SSH. В тех случаях, svn checkout --username
может не работать на Ваш репозиторий.
Подрывная деятельность обычно просит у меня мое "Имя пользователя подрывной деятельности", если это приводит использование к сбою моего зарегистрированного имени пользователя. Так, когда я (обычно) буду ленив, я просто позволю ему попросить у меня моего пароля, и я совершу нападки, входят и ожидают имени пользователя, запрашивают и используют мое имя пользователя Подрывной деятельности.
Иначе, решением Michael является хороший способ определить имя пользователя сразу же.
Я верю, используете ли Вы метод file:// для доступа к репозиторию подрывной деятельности, изменения всегда выполняются при пользователе, который получает доступ к репозиторию. Необходимо использовать метод, который поддерживает аутентификацию, такую как http:// или svn://.
См. http://svnbook.red-bean.com/en/1.5/svn-book.html#svn.serverconfig.choosing
Используя Подрывную деятельность или с модулем Apache или с svnserve. Я был в состоянии выполнить операции как многочисленные пользователи, использующие --username
.
Каждый раз, когда Вы вызываете команду Subversion как 'новый' пользователь, Ваш $HOME/.subversion/auth/<authentication-method>/
, каталогу будут кэшировать новую запись для того пользователя (предполагающий, что Вы в состоянии аутентифицировать с правильным паролем или методом аутентификации для сервера, с которым Вы связываетесь как тот конкретный пользователь).
TortoiseSVN всегда запрашивает имя пользователя. (если Вы не говорите его не)
Я полагаю, что можно установить SVN_USER
переменная среды для изменения имени пользователя SVN.
Для svn over ssh попробуйте:
svn list svn+ssh://[user_name]@server_name/path_to_repo
svn запросит у вас пароль user_name
.