Saya sedang mengembangkan plugin WordPress. Ketika saya mengaktifkan plugin saya, saya menerima pesan berikut:
Plugin menghasilkan 293 karakter dari output tak terduga selama aktivasi. Jika Anda melihat pesan "header sudah terkirim", masalah dengan umpan sindikasi atau masalah lain, coba nonaktifkan atau hapus plugin ini.
Plugin ini berfungsi dengan baik tetapi saya tidak tahu mengapa saya menerima pesan ini. Plugin saya adalah: http://wordpress.org/extend/plugins/facebook-send-like-button/
plugin-development
headers
Keliru
sumber
sumber
activate_plugin method
dalamwordpress/wp-admin/includes/plugin.php
. Isi dari variabel $ output akan menunjukkan kepada Anda data yang dimuat ke dalam Pengecualian selalu dilemparkan, dan kemudian dikaburkan oleh wordpress.Jawaban:
Dugaan saya adalah Anda mendapatkan kesalahan PHP, yang menghasilkan output sebelum header dikirim. Jika Anda telah
E_NOTICE
mengaktifkan, panggilan$_POST['foo']
dapat menghasilkan kesalahan "Pemberitahuan: variabel tidak terdefinisi" jika variabel itu tidak disetel.Praktik terbaik: jangan pernah berasumsi tentang variabel GET, POST, COOKIE, dan REQUEST. Selalu periksa dulu menggunakan
isset()
atauempty()
.sumber
Ini biasanya disebabkan oleh spasi atau baris baru sebelum
<?php
tag pembuka atau setelah?>
tag penutup .Lihat halaman ini untuk melihat beberapa solusi: Bagaimana cara saya mengatasi Header yang sudah mengirim masalah peringatan?
MEMPERBARUI
Setelah memeriksa kode plugin Anda, satu hal yang saya perhatikan adalah Anda tidak memiliki tag PHP penutup. Di baris terakhir, tambahkan
?>
sumber
?>
tag penutup . Bahkan, salah satu cara untuk menjamin bahwa itu tidak akan menyebabkanHeaders already sent
masalah adalah dengan meninggalkan tag penutup.?>
.Di awal fungsi aktivasi Anda beri tanda
ob_start();
dan pada akhirnya beri tanda atrigger_error(ob_get_contents(),E_USER_ERROR);
Kemudian coba aktifkan plugin Anda, dan Anda kemudian dapat melihat apa sebenarnya ' menghasilkan 293 karakter dari hasil yang tak terduga '. Sejak saat debugging ini akan lebih mudah (baik menghapus karakter baris baru atau menyelesaikan beberapa kesalahan).
sumber
Saya pernah menghadapi masalah yang sama sebelumnya, bagi saya itu adalah ruang ekstra putih. Setelah saya menghapus semua spasi putih plugin itu dapat diaktifkan tanpa kesalahan / peringatan.
sumber
Saya tidak yakin ini masalahnya, tapi saya cukup yakin.
Anda perlu menggunakan panggilan balik yang valid sebagai argumen kedua di
register_activation_hook()
:Sejauh yang saya tahu, Anda belum menentukan di
twl_tablo_olustur()
mana pun. Ini tentu akan menjelaskan output yang tidak terduga (kesalahan PHP yang dihasilkan dari mencoba memanggil fungsi yang tidak ada), dan akan menjelaskan mengapa itu berfungsi dengan baik dalam semua keadaan lainnya.sumber
register_activation_hook(__FILE__,'twl_tablo_olustur');
kode ini dari versi lama. Dalam versi baru (Anda dapat memeriksa, v1.3) diperbarui, tetapi kesalahan masih sama.Saya cenderung mendapatkan pesan-pesan ini banyak ketika saya mengeluarkan pesan plugin / tema debug, terutama ketika saya mengeluarkan barang-barang sebelum wp_header dipanggil.
Jika Anda mengeluarkan karakter apa pun, maka saya percaya (mungkin salah di sini) bahwa ada deklarasi tajuk implisit, jadi ketika panggilan tajuk normal () terjadi, Anda mendapatkan kesalahan karena Anda tidak dapat memiliki 2 deklarasi tajuk.
Anda dapat menggunakan ob_start () untuk buffer output, yang seharusnya menghapus kesalahan - lihat komentar di sini: http://php.net/manual/en/function.header.php
sumber
Saya tahu ini adalah pertanyaan lama dan memang ada jawaban yang diterima. Ada banyak jawaban yang mencakup apa masalah aktivasi bisa berpotensi menjadi. Namun, tidak ada jawaban yang benar-benar mendapatkan inti masalah BAGAIMANA untuk men-debug masalah dengan aktivasi plugin.
Jika Anda akan mengembangkan plugin WP, Anda juga dapat menggunakan alat yang benar untuk pekerjaan itu. Salah satunya adalah Debug Bar . Ini adalah plugin yang membantu Anda men-debug masalah di WP. Jika Anda seorang pengembang plugin, itu harus di kotak alat Anda.
Debug Bar memiliki sejumlah add-on - plugins untuk plugin, jika Anda mau. Salah satunya adalah Aktivasi Plugin Debug Bar , yang akan menunjukkan kepada Anda kesalahan PHP yang dihasilkan ketika plugin diaktifkan. Setelah Anda tahu apa kesalahan PHP yang menyebabkan tajuk dikirim, maka Anda tahu ke mana Anda harus mencari untuk memperbaikinya. Percayalah, mengetahui apa kesalahan yang dapat menghemat banyak waktu daripada mencoba untuk mencari tahu apa kesalahan bisa .
sumber
Melihat revisi terakhir dari plugin (381724) masalahnya adalah terlalu banyak ruang
setiap kali Anda ingin membuat struktur ini:
dalam kode Anda gunakan TAB dan bukan spasi.
Ini kode Anda tempat saya mengganti semua spasi dengan tab dan saya tidak mendapatkan pesan saat aktivasi:
sumber
function blabla(){?> <input> <?php code... ?> output something <?php code.. }
maka itu tidak terjadi.?>
maka Anda akan mendapatkanheader already send error
karena spasi ekstra putih akan dicetak ketika mesin php menguraikannya.Anda menghapus tag penutup php (?>) Dari akhir setiap file. dan juga menghapus semua ruang kosong setelah tag penutup php (?>)
ketika Anda mengaktifkan plugin cukup periksa apakah tabel sudah ada atau tidak.
saya menghapus masalah dengan kode
sumber
Masalah saya adalah bahwa file tersebut disimpan sebagai file UTF-8. Menyimpannya dengan Codepage 1252 menyelesaikan kesalahan.
sumber