Saya ingin men-debug beberapa kode PHP, tapi saya kira mencetak log ke layar atau file tidak masalah bagi saya.
Bagaimana saya harus mencetak log dalam kode PHP?
Biasanya print
/ printf
tampaknya pergi ke output HTML bukan konsol.
Saya memiliki server Apache yang mengeksekusi kode PHP.
printf
pertanyaan akan mendapatkan banyak upvotes ini ...Jawaban:
Trik yang kurang dikenal adalah mod_php memetakan stderr ke log Apache. Dan, ada aliran untuk itu, jadi
file_put_contents('php://stderr', print_r($foo, TRUE))
akan dengan baik membuang nilai$foo
ke dalam log kesalahan Apache.sumber
var_export($foo, true)
alih-alihprint_r($foo, true)
jikaprint_r
tidak memberi Anda informasi jenis yang Anda butuhkan.semoga bermanfaat
sumber
Anda dapat menggunakan error_log untuk mengirim ke file log kesalahan server Anda (atau file opsional lainnya jika Anda mau)
sumber
Jika Anda menggunakan Linux:
atau
dan kemudian di konsol
Ini akan menunjukkan terus menerus baris terakhir yang dimasukkan ke dalam file.
sumber
Anda perlu mengubah kerangka berpikir Anda. Anda menulis PHP, bukan apa pun yang Anda gunakan untuk menulis. Debugging dalam PHP tidak dilakukan di lingkungan konsol.
Di PHP, Anda memiliki 3 kategori solusi debug:
Belajarlah untuk menggunakan itu alih-alih mencoba membuat PHP berperilaku seperti bahasa lain apa pun yang Anda gunakan.
sumber
Apakah Anda melakukan debug pada konsol? Ada berbagai opsi untuk debugging PHP. Fungsi yang paling umum digunakan untuk debugging cepat & kotor adalah var_dump .
Itu dikatakan dan keluar dari jalan, meskipun var_dump mengagumkan dan banyak orang melakukan semuanya hanya dengan itu, ada alat dan teknik lain yang bisa sedikit membumbui itu.
Hal-hal untuk membantu jika debugging di halaman web, bungkus
<pre> </pre>
tag di sekitar pernyataan dump Anda untuk memberi Anda format yang tepat pada array dan objek.Yaitu:
Dan, last but not least pastikan debugging penanganan kesalahan Anda diatur untuk menampilkan kesalahan. Menambahkan ini di bagian atas skrip Anda mungkin diperlukan jika Anda tidak dapat mengakses konfigurasi server untuk melakukannya.
Semoga berhasil!
sumber
Jika Anda tidak ingin mengintegrasikan kerangka kerja seperti Zend , maka Anda dapat menggunakan metode trigger_error untuk masuk ke log kesalahan php.
sumber
Sederhananya adalah trigger_error:
tetapi karena itu Anda tidak dapat menggunakan array atau Object
sumber
Anda juga dapat menulis ke file seperti ini:
Pastikan izin yang tepat telah diatur sehingga php dapat mengakses dan menulis ke file (
775
).sumber
Anda dapat menggunakan modul php curl untuk melakukan panggilan ke http://liveoutput.com/ . Ini berfungsi baik di lingkungan perusahaan yang aman di mana ada pembatasan tertentu dalam php.ini yang membatasi penggunaan
file_put_contents
.sumber
Ini alat yang hebat untuk debugging & login php: PHp Debugger & Logger
Ini berfungsi langsung dari kotak dengan hanya 3 baris kode. Ia dapat mengirim pesan ke konsol js untuk debugging ajax dan dapat menggantikan penangan kesalahan. Itu juga membuang informasi tentang variabel seperti var_dump () dan print_r (), tetapi dalam format yang lebih mudah dibaca. Alat yang sangat bagus!
sumber
Saya telah menggunakan banyak dari ini, tetapi karena saya biasanya perlu men-debug ketika mengembangkan, dan karena saya mengembangkan di localhost, saya telah mengikuti saran orang lain dan sekarang menulis ke konsol debug JavaScript peramban (lihat http: //www.codeforest. net / debugging-php-in-browser-javascript-console ).
Itu berarti bahwa saya dapat melihat halaman web yang dihasilkan oleh PHP saya di browser saya & tekan F12 untuk dengan cepat menunjukkan / menyembunyikan jejak debug.
Karena saya terus melihat alat pengembang untuk debugger, tata letak CSS, dll, masuk akal untuk melihat loggon PHP saya di sana.
Jika ada yang memutuskan untuk memberi kita kode itu, saya membuat satu perubahan kecil. Setelah
function debug($name, $var = null, $type = LOG) {
saya tambahkan
$name = 'PHP: ' . $name;
Ini karena sisi server saya PHP menghasilkan JavaScript yang mengandung JavaScript & saya merasa berguna untuk membedakan antara output dari PHP & JS.
(Catatan: Saat ini saya memperbarui ini untuk memungkinkan saya mengaktifkan & menonaktifkan berbagai jenis output: dari PHP, dari JS, dan akses basis data)
sumber
Saya menggunakan cakephp jadi saya menggunakan:
sumber
Kamu bisa memakai:
sumber
Kamu bisa memakai
atau jika Anda ingin mencetak pernyataan itu dalam log yang dapat Anda gunakan
sumber