Я разрабатываю плагины для WordPress. Когда я активирую свой плагин, я получаю следующее сообщение:
Плагин генерировал 293 символа неожиданного вывода во время активации. Если вы заметили сообщения «заголовки уже отправлены», проблемы с каналами синдикации или другие проблемы, попробуйте деактивировать или удалить этот плагин.
Плагин работает очень хорошо, но я не знаю, почему я получаю это сообщение. Мой плагин: http://wordpress.org/extend/plugins/facebook-send-like-button/
activate_plugin method
inwordpress/wp-admin/includes/plugin.php
. Содержимое переменной $ output покажет вам, что данные, загруженные в исключение, неизменно выбрасываются, а затем скрываются в WordPress.Ответы:
Я предполагаю, что вы получаете ошибку PHP, которая генерирует вывод перед отправкой заголовков. Если вы
E_NOTICE
включили, вызов$_POST['foo']
может генерировать ошибку «Notice: undefined variable», если эта переменная не установлена.Лучшая практика: никогда не предполагайте ничего о переменных GET, POST, COOKIE и REQUEST. Всегда проверяйте сначала, используя
isset()
илиempty()
.источник
Обычно это вызвано пробелами или новыми строками перед открывающим
<?php
тегом или после закрывающего?>
тега.Посетите эту страницу, чтобы узнать о некоторых решениях. Как решить проблему с уже отправленными заголовками?
ОБНОВИТЬ
Изучив код вашего плагина, я заметил, что у вас нет закрывающего тега PHP. В последней строке добавьте
?>
источник
?>
теге. Фактически, один из способов гарантировать, что это не вызоветHeaders already sent
проблем, - это оставить закрывающий тег.?>
.В начале вашей функции активации положить
ob_start();
и в конце положитьtrigger_error(ob_get_contents(),E_USER_ERROR);
Затем попробуйте активировать свой плагин, и вы сможете увидеть, что на самом деле представляют собой « сгенерированные 293 символа неожиданного вывода ». С этого момента отладка станет проще (либо удалите символы новой строки, либо исправьте некоторые ошибки).
источник
Я сталкивался с той же проблемой раньше, для меня это был дополнительный пробел. После того, как я удалил все эти пробелы, плагин мог активироваться без каких-либо ошибок / предупреждений.
источник
Я не уверен, что это проблема, но я в этом уверен.
Вам необходимо использовать действительный обратный вызов в качестве второго аргумента в
register_activation_hook()
:Насколько я могу судить, вы
twl_tablo_olustur()
нигде не определились . Это, безусловно, объясняет неожиданный вывод (ошибка PHP, сгенерированная при попытке вызвать несуществующую функцию), и объясняет, почему он работает нормально при всех других обстоятельствах.источник
register_activation_hook(__FILE__,'twl_tablo_olustur');
этот код из старой версии. В новой версии (вы можете проверить, v1.3) она обновлена, но все еще та же ошибка.Я часто получаю эти сообщения при выводе сообщений отладки плагина / темы, особенно когда я выводю материал до вызова wp_header.
Если вы выводите какие-либо символы, то я считаю (что здесь может быть неправильно), что существует неявное объявление заголовка, поэтому, когда происходит нормальный вызов header (), вы получаете ошибку, поскольку у вас не может быть двух объявлений заголовка.
Вы можете использовать ob_start () для буферизации вывода, что должно устранить ошибку - посмотрите комментарии здесь: http://php.net/manual/en/function.header.php
источник
Я знаю, что это старый вопрос, и на него есть принятый ответ. Есть много ответов , которые охватывают то , что проблема активации может потенциально быть. Тем не менее, ни один из ответов на самом деле не касается основной проблемы КАК отладить проблемы с активацией плагина.
Если вы собираетесь разрабатывать плагины WP, вы можете также использовать правильные инструменты для работы. Одним из них является панель отладки . Это плагин, который поможет вам отладить проблемы в WP. Если вы разработчик плагинов, он должен быть в вашем наборе инструментов.
Панель отладки имеет ряд дополнений - плагинов для плагина, если хотите. Одним из них является активация плагина отладочной панели , которая покажет вам ошибку PHP, сгенерированную при активации плагина. Как только вы узнаете, в чем заключается ошибка PHP, которая приводит к отправке заголовков, тогда вы знаете, где нужно искать, чтобы исправить ее. Поверьте мне, зная, что это за ошибка , вы сэкономите массу времени, вместо того, чтобы попытаться выяснить, в чем может быть ошибка .
источник
Глядя на последнюю версию плагина (381724), проблема в том, что слишком много пробелов
каждый раз, когда вы хотите создать эту структуру:
в вашем коде используйте TAB, а не пробелы.
Вот ваш код, где я заменил все пробелы на вкладках, и я не получаю никаких сообщений при активации:
источник
function blabla(){?> <input> <?php code... ?> output something <?php code.. }
тогда это не так.?>
то получите,header already send error
потому что эти лишние пробелы будут распечатаны, когда механизм php проанализирует их.Вы удаляете тег php close (?>) В конце каждого файла. а также удалить все пустое место после тега php close (?>)
когда вы активируете плагин, просто проверьте, существует ли таблица или нет.
я удалил проблему по коду
источник
Моя проблема заключалась в том, что файл был сохранен как файл UTF-8. Сохранение с помощью кодовой страницы 1252 устранило ошибку.
источник