Dasar-dasar untuk men-debug toko Magento

81

Bagaimana saya bisa men-debug toko Magento saya

Ini adalah pertanyaan yang tidak terlalu relevan bagi kami sekarang, tetapi jika situs Magento SE ada 5 tahun yang lalu, mungkin itu adalah pertanyaan pertama kami. Bagi mereka yang baru saja masuk ke Magento, atau tidak mengenalnya - mengetahui dasar-dasar debugging bisa menjadi kunci untuk mengesampingkan penyebab masalah. Dan meskipun hal itu tidak relevan bagi kami sekarang, kami membuka pertanyaan ini dengan pendekatan yang dijawab sendiri.

Bantu situs saya mati!

  1. Apakah desain saya salah?
  2. Apakah modul pihak ke-3 salah?
  3. Mengapa saya tidak bisa melihat kesalahan?

Setiap pertanyaan ini dapat segera dijawab dengan mengikuti pendekatan standar untuk debugging yang bahkan dapat diselesaikan oleh pengguna paling dasar. Melalui proses penghapusan dasar-dasar debugging toko Magento.

Ben Lessani - Sonassi
sumber
5
Gunakan debugger yang bagus dan kecerdasan Anda ...
Sylvain Rayé
4
Apakah ini pertanyaan serius?
davidalger
5
Tidak, ini pertanyaan yang sengaja dijawab sendiri untuk membantu membuat bola bergulir pada BETA ini. Pertukaran tumpukan tidak hanya memungkinkan pertanyaan yang dijawab sendiri, tetapi secara aktif mendorongnya blog.stackoverflow.com/2012/05/encyclopedia-stack-exchange . @sylvain Pertanyaan ini ditujukan untuk pengguna baru / yang tidak berpengalaman untuk membantu memulai proses debugging
Ben Lessani - Sonassi
@sonassi saya tidak menurunkan suara dan Anda membuka kembali pertanyaan Anda dengan cara yang lebih jelas. Mungkin saya bisa membantu untuk itu :) Saya tidak tahu bahwa SE bukan hanya T&J, baik untuk diketahui. Tentang topik utama, jawabannya di sini hanya permukaan sebagian besar masalah yang lebih dalam, itu sebabnya saya katakan menggunakan debugger dan mengerti terlebih dahulu cara kerja proses pengiriman intern Magento, Anda dapat menyelesaikan banyak masalah setelah Anda memahaminya. Itu 5 sen saya. Cara mengatasi masalah dengan perhitungan pajak, metode pengiriman, penghasil blok atau lainnya: debugging! Ini juga membantu untuk mempelajari proses magang.
Sylvain Rayé
2
Dimengerti. Apa yang saya coba bantu adalah kesalahan fatal yang lebih mendasar. Jelas ruang lingkup masalah terlalu luas untuk dijawab oleh satu solusi. Quirks / bug kecil didiagnosis melalui debugging - tetapi untuk kesalahan fatal - diperlukan pendekatan yang kurang rumit, seperti di bawah ini. Dan ya, saya mengubah pertanyaannya :)
Ben Lessani - Sonassi

Jawaban:

98

Debugging adalah sedikit seni, tetapi sesuatu yang dapat dengan mudah dikuasai dengan mengikuti rejimen sederhana.

Ikuti setiap titik sampai Anda akhirnya mencapai solusi.


Aktifkan Kesalahan PHP

Ini adalah kunci untuk sebagian besar masalah. Demi keamanan atau alasan lain, tampilan kesalahan PHP kemungkinan dapat dinonaktifkan secara default oleh konfigurasi PHP Anda.

Anda dapat mengaktifkan kesalahan dengan solusi yang lebih permanen, atau hanya sesuatu yang lebih sementara.

Solusi permanen

Untuk pengguna Apache / mod_php

Di .htaccessfile root dokumen Anda - cukup taruh ini di atas.

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag  log_errors on
php_value error_log  /home/path/public_html/var/log/system.log

Untuk pengguna Nginx / FastCGI

Dalam konfigurasi virtualhost Nginx Anda, baik dalam location .php {direktif akhir , atau dalam fastcgi_paramsfile (jika Anda memiliki satu yang ditentukan)

fastcgi_param PHP_VALUE  display_startup_errors=on;
fastcgi_param PHP_VALUE  display_errors=on;
fastcgi_param PHP_VALUE  html_errors=on;
fastcgi_param PHP_VALUE  log_errors=on;
fastcgi_param PHP_VALUE  error_log=/home/path/public_html/var/log/system.log;

Solusi sementara / Universal

Untuk platform apa pun

Edit bootstrap Magento index.phpdi root dokumen Anda dan batalkan komentar pada baris berikut:

#ini_set('display_errors', 1);

Aktifkan Mode Pengembang

Ketika Anda memiliki kesalahan dan tiba-tiba tekan halaman "Laporan Kesalahan", dan diberi string kesalahan yang tampaknya tidak berguna seperti 1184257287824- Anda punya beberapa opsi.

Solusi permanen

Untuk pengguna Apache / mod_php

Di .htaccessfile root dokumen Anda - cukup taruh ini di atas.

SetEnv MAGE_IS_DEVELOPER_MODE true

Untuk pengguna Nginx / fastcgi

Dalam konfigurasi virtualhost Nginx Anda, baik dalam location .php {direktif akhir , atau dalam fastcgi_paramsfile (jika Anda memiliki satu yang ditentukan)

fastcgi_param MAGE_IS_DEVELOPER_MODE true;

Solusi sementara / Universal

Edit bootstrap Magento index.phpdi root dokumen Anda dan buat ifpernyataan itu selalu benar, atau diaktifkan untuk IP spesifik Anda.

if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE']) || true) {
  Mage::setIsDeveloperMode(true);
}

atau

if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE']) || $_SERVER['REMOTE_ADDR'] == 'my.ip.add.ress') {
  Mage::setIsDeveloperMode(true);
}

Periksa izin Anda

Izin yang tidak benar akan menyebabkan banyak masalah, banyak yang tidak mudah ditemukan pada pandangan pertama.

Sebagai contoh.
Jika PHP tidak dapat menulis ke ./mediadirektori dan JS gabungan Anda diaktifkan - Magento tidak dapat membuat file gabungan dan URI unik terkait untuk media. Jadi alih-alih, apa yang akan Anda temukan dalam kode sumber peramban adalah jalur server lengkap ke file media /home/path/public_html/media/xxx

Jika tidak, situs tersebut dapat berfungsi seperti biasa - tanpa ada kesalahan kritis yang benar-benar terlihat.

Harap diingat, praktik ini aman untuk hosting khusus tetapi dapat menghadirkan masalah keamanan dengan hosting bersama jika proses Apache tidak di-chroot per pengguna.

Dalam contoh kami, pengguna SSH / FTP adalah sonassi, pengguna Apache apachedan grupnyaapache

Tambahkan pengguna FTP / SSH ke grup Apache

Yang paling penting, kita perlu memastikan bahwa pengguna FTP / SSH adalah bagian dari kelompok Apache, dalam contoh kita, apache(tetapi juga umum www-data)

usermod -a -G apache sonassi

Terus tambahkan sebanyak mungkin pengguna ke grup yang Anda miliki untuk FTP / SSH.

Setel ulang izin asli

Jadi sebelum kita mulai, mari pastikan semua izin sudah benar.

chown -R sonassi:apache /home/path/public_html/
find /home/path/public_html/ -type d -exec chmod 775 {} \;
find /home/path/public_html/ -type f -exec chmod 664 {} \;

Membuat perubahan permanen

ACL dan Bit Lengket

ACL di Linux memungkinkan kami untuk menetapkan aturan tertentu, dalam kasus kami, file izin apa yang harus diwarisi saat dibuat. Sebuah bit lengket (disebutkan nanti) mengurus warisan kelompok, tetapi tidak membantu dengan hak akses, itulah sebabnya mengapa kita menggunakan ACL.

Mulailah dengan mengaktifkan dukungan ACL pada partisi aktif, pastikan Kernel Anda dikompilasi dengan dukungan ACL .

Partisi Anda mungkin /, /home, /varatau sesuatu yang lain, ganti sesuai.

mount -o remount,acl /home

Sekarang ACL diaktifkan, kita dapat mengatur aturan ACL dan mengelompokkan bit yang lengket:

setfacl -d -m u::rwx,g::rwx,o::rx /home/path/public_html/
chmod g+s /home/path/public_html/

Tetapi saya tidak memiliki dukungan ACL

Jika Kernel Anda tidak mendukung ACL, Anda juga dapat menggunakan umask(yang merupakan pengaturan waktu berjalan untuk BASH, FTP dan PHP) untuk mengatur izin file default. Magento biasanya set umask(0)di index.php, bagaimanapun, itu akan kepentingan Anda untuk mengubah ini.

Dalam index.phpmengubah umaskgaris yang Anda buat

umask(022);

Dan di lingkungan BASH Anda untuk SSH, atur ini di Anda .bashrcatau.bash_profile

umask 022

Untuk server FTP Anda, Anda harus membaca dokumentasi untuk itu, tetapi prinsipnya sama.


Kembalikan tema ke default

Kemungkinan tema atau paket Anda bertanggung jawab atas masalah ini. Mengembalikan ke tema vanilla Magento adalah cara cepat untuk mengetahuinya.

** Ini disertai dengan peringatan bahwa beberapa modul mungkin tergantung pada fitur tema tertentu *

Daripada mengubah apa pun melalui panel admin, lebih mudah untuk sekadar mengganti nama direktori yang menyinggung.

Melalui SSH

mv ./app/design/frontend/myBrokenTheme{,.tmp}
mv ./skin/frontend/myBrokenTheme{,.tmp}

Atau melalui klien FTP Anda, lintasi dan ganti nama paket Anda ke sesuatu yang lain. misalnya.myBrokenTheme.tmp

Jika ini menyelesaikan masalah Anda

Maka Anda perlu menggali sedikit lebih dalam tentang bagian mana dari template yang bermasalah. Jadi kembalikan paket Anda dan coba yang berikut ini, ujilah di antaranya.

Pada dasarnya, prosesnya adalah mengaktifkan direktori secara bertahap saat Anda menelusuri pohon file - hingga Anda dapat menemukan file yang menyinggung itu.

  1. Ubah nama direktori tata letak menjadi .tmp
  2. Ganti nama direktori templat menjadi .tmp

Kemudian jika salah satu menghasilkan perbaikan, ganti nama semua file di dalam direktori layout menjadi .tmp- (untuk pengguna SSH ls | xargs -I {} mv {} {}.tmpatau rename 's/^/.tmp/' *)

Kemudian secara bertahap aktifkan setiap file 1 per 1 hingga teratasi.

Jika ini tidak menyelesaikan masalah Anda

Ada potensi bahwa Anda base/defaultatau enterprise/defaultdirektori telah terkontaminasi - dan terbaik diganti dengan versi bersih dikenal.

Anda dapat melakukan ini dengan mengunduh membangun Magento yang bersih dan mengganti direktori Anda jika perlu. Melalui SSH Anda dapat melakukan ini:

cd /home/path/public_html/
mkdir clean_mage
cd clean_mage
MAGENTO_VERSION=1.7.0.0
wget -O magento.tgz  http://www.magentocommerce.com/downloads/assets/$MAGENTO_VERSION/magento-$MAGENTO_VERSION.tar.gz
tar xvfz magento.tgz
cd /home/path/public_html/app/design/frontend
mv base{,.tmp}
cp -par /home/path/public_html/clean_mage/magento/app/design/frontend/base .
cd /home/path/public_html/skin/frontend
mv base{,.tmp}
cp -par /home/path/public_html/clean_mage/magento/skin/frontend/base .

Anda juga dapat mengambil kesempatan ke diffdua direktori jika Anda ingin memverifikasi perubahan apa pun.

diff -r base base.tmp

NB. Metode ini akan menyebabkan lebih banyak kesalahan selama proses, karena ketergantungan modul menentukan keberadaan file tertentu. Sayangnya, par untuk kursus.


Nonaktifkan modul lokal

Secara default, Magento mendefinisikan jalur menyertakan PHP untuk memuat kelas dalam urutan berikut

Local > Community > Core

Jika file di Lokal - muat dan jangan lakukan lagi.
Jika file ada di komunitas - muat dan jangan lakukan lagi.
Jika file tidak dapat ditemukan di tempat lain - muat dari inti.

Sekali lagi, daripada menonaktifkan modul melalui panel admin Magento, lebih praktis untuk melakukan ini pada tingkat file.

Biasanya, untuk menonaktifkan modul dengan cara "benar", Anda akan mengedit ./app/etc/modules/MyModule.xmlfile masing-masing dan mengatur <active>false</active>- namun, ini sebenarnya tidak mencegah kelas dari memuat.

Jika kelas lain memperluas kelas yang diberikan dalam modul (mengabaikan deklarasi dependensi Magento), itu akan tetap dimuat - terlepas dari apakah ekstensi dinonaktifkan atau tidak.

Jadi sekali lagi, cara terbaik untuk menonaktifkan ekstensi adalah mengganti nama direktori.

Mulailah dengan menonaktifkan lokal

Cukup ganti nama direktori melalui FTP, atau gunakan perintah SSH berikut

mv ./app/code/local{,.tmp}

Kemudian nonaktifkan komunitas

mv ./app/code/community{,.tmp}

Jika masalah teratasi dari keduanya

Maka itu adalah kasus pemahaman dari modul mana kesalahan berasal. Seperti contoh yang diberikan di atas untuk diagnosis paket, proses yang sama berlaku.

Jadi kembalikan direktori X dan coba yang berikut, uji di antara masing-masing.

Intinya, prosesnya adalah mengaktifkan direktori (modul) secara bertahap satu per satu hingga kesalahan muncul kembali

  1. Ganti nama semua modul di direktori menjadi .tmp(untuk pengguna SSH ls | xargs -I {} mv {} {}.tmpatau rename 's/^/.tmp/' *)
  2. Secara bertahap aktifkan setiap modul satu per satu, dengan menghapus .tmpdari nama file

Jika masalah tidak terselesaikan

Maka tidak menutup kemungkinan inti itu sendiri terkontaminasi. Inti utama PHP Magento terdiri dari

./app/code/core
./lib

Jadi sekali lagi, ganti nama direktori ini dan salin dalam varian bersih. Dengan asumsi Anda sudah mengunduh versi Magento yang bersih seperti di atas, melalui SSH, Anda dapat melakukan ini:

cd /home/path/public_html/app/code
mv core{,.tmp}
cp -par /home/path/public_html/clean_mage/magento/app/code/core .

Kemudian jika masalah masih belum terselesaikan, ganti libdirektori juga

cd /home/path/public_html
mv lib{,.tmp}
cp -par /home/path/public_html/clean_mage/magento/lib .

Pada titik ini, toko Magento Anda tidak lebih dari instalasi vanila dengan database yang dimodifikasi.

Beberapa model sebenarnya masih disimpan dalam basis data (Misalnya, peningkatan pesanan) - jadi pada titik ini, ini menjadi kasus pembuatan secara manual. Sejauh ini, semua langkah di atas telah dibalik tanpa kerusakan yang berlangsung lama. Tetapi jika kita juga mengimpor database Magento yang bersih - itu bisa membuktikan tidak dapat dikembalikan (singkatnya memulihkan cadangan).


Panduan di atas berfungsi untuk membantu Anda mengidentifikasi kesalahan; tidak memperbaiki kesalahan yang dihasilkan.

Konten rela bersumber dari www.sonassi.com/knowledge-base/magento-debug-process dan www.sonassi.com/knowledge-base/stop-magento-permissions-errors-permanently

Ben Lessani - Sonassi
sumber
7
Saya pikir jawabannya mungkin bermanfaat bagi beberapa pengguna Magento tetapi harus ditandai sebagai pertanyaan Q&A yang mirip komunitas seperti poster yang langsung menjawab pertanyaan itu.
Matthias Zeis
8
Pertanyaan yang dijawab sendiri tidak hanya diizinkan, tetapi didorong oleh SE. blog.stackoverflow.com/2012/05/encyclopedia-stack-exchange . Lebih banyak pengguna yang harus melakukannya untuk membantu beta ini berkembang, bukan mencerca anggota lain karena berupaya membantu orang lain dan mengembangkan situs?
Ben Lessani - Sonassi
Bukankah ini seharusnya 755dan 644izin? Atau apakah Anda punya alasan khusus untuk merekomendasikan 775dan 664?
Jürgen Thelen
@Jurgen - Untuk semua server kami - Nginx / Apache / PHP selalu berjalan sebagai pengguna yang sama dengan SSH / FTP - baik itu pada shared / dedicated hosting. Jadi izin hanya bisa rwxuntuk pemilik - karena grup dan orang lain tidak relevan. Tapi seperti yang saya sebutkan - tidak semua orang mengkonfigurasi server mereka dengan benar (pada kenyataannya, sangat, sangat sedikit yang melakukan) - dan ada potensi bagi pengguna Apache / Nginx / PHP berbeda dari pengguna SSH / FTP - sehingga menambahkan satu sama lain ke masing-masing kelompok kemudian memungkinkan untuk masing-masing ke rwxfile sebagaimana mestinya.
Ben Lessani - Sonassi
Jika Anda tidak ingin membedakan kedua direktori menggunakan terminal, Anda dapat menginstal salah satu opsi GUI ini: askubuntu.com/questions/12473/…
pablofiumara
18

Seperti yang diminta di Twitter dan dibahas di Meta saya akan mulai di sini tutorial debugging untuk non-devs.

Pertama saya pikir (bahkan kamu mencoba untuk terlibat ini) Magento terlalu kompleks untuk pedagang tanpa tim pengembang / pengembangan. Tetapi jika Anda berani dan ingin mencobanya, kami memberikan yang terbaik di sini untuk membantu Anda. Saya pikir untuk beberapa pertanyaan adalah perbatasan antara "bagaimana saya bisa melakukan ini?" dan "tolong kerjakan, aku terlalu bodoh untuk google ini" adalah garis yang cukup baik. Saya mengerti bahwa sering kali sulit, untuk google berpikir karena Anda tidak tahu untuk apa Anda googling, karena Anda belum tahu penamaannya. Ini berkata, mari kita kumpulkan hal-hal yang bisa dilakukan semua orang dengan toko magento, bahkan jika dia bukan pengembang.

Jawaban yang sangat bagus bagaimana men-debug magento, ketika Anda ingin menjadi kotor sudah diberikan oleh Sonassi , tetapi saya mencoba untuk menambahkan hal-hal dan menyalin apa yang menurut saya berlaku untuk pedagang.

Penafian: Semua direktori dan file yang disebutkan dalam posting ini relatif terhadap folder root magento, yang mungkin ada di /var/wwwtetapi tergantung pada penyedia hosting, Anda yang disebut Document Root dapat ada di mana-mana, tanyakan pada provider Anda, jika Anda tidak menemukan magento Anda !

Mode pengembangan

Anda ingin memiliki kesalahan nyata, bukan halaman "kesalahan terjadi" yang jelek yang diberikan magento secara normal. http://www.fontis.com.au/blog/magento/custom-magento-error-page

Terima kasih kepada fontis.com untuk gambar ini.

Laporan, yang disebutkan di halaman dapat ditemukan di var/reports/<the_number>

Saat Anda mengaktifkan mode pengembangan, magento memunculkan kesalahan nyata, kesalahan ini terutama dapat membocorkan kredensial, seperti yang ada di basis data! Jadi, pikirkan sebelum Anda menyalakannya di server produksi!

Buka index.phpfile Anda di folder root magento, tergantung pada versinya, Anda menemukan baris ini di sekitar baris 73:

if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE'])) {
    Mage::setIsDeveloperMode(true);
}

#ini_set('display_errors', 1);

Untuk mengaktifkan mode sekarang, Anda harus mengubah garis-garis ini.

Jika Anda tahu alamat IP Anda (kebanyakan orang mendapatkan yang baru setiap 24 jam, setidaknya di Jerman), google membantu Anda di sini:

Alamat IP publik Anda adalah 87.138.100.68

if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE']) 
    || $_SERVER['REMOTE_ADDR'] == 'my.ip.add.ress'
) {
    Mage::setIsDeveloperMode(true);
    ini_set('display_errors', 1);
}

Jika Anda tidak tahu ip Anda karena alasan apa pun, Anda dapat menampilkan kesalahan untuk semua orang.

#if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE']) || true) {
  Mage::setIsDeveloperMode(true);
#}
ini_set('display_errors', 1);

Penebangan

Magento mencatat banyak hal ke dalam dua file:

  • var/log/exception.log
  • var/log/system.log

Pengecualian selalu dicatat. Log sistem perlu diaktifkan di backend:

System > Configuration > Developer > Log

masukkan deskripsi gambar di sini

Setel Enabledke Ya dan Anda melihat lebih banyak kesalahan dan debug pesan masuk system.logdan masukexception.log

Apakah ini masalah tema?

Anda memiliki tema sendiri, ini dikonfigurasi di backend di sini:

Sistem> Konfigurasi> Desain

masukkan deskripsi gambar di sini

Terima kasih kb.magenting.com untuk gambarnya

Di sini Anda dapat mengkonfigurasi paket dan tema. Jika Anda ingin mencoba mereproduksi kesalahan dalam tema default, hapus semuanya dari kolom input. Kemudian klik simpan dan Anda melihat tema magento standar seperti di toko demo , jika Anda memiliki toko sebelum 1,8, Anda dapat menemukan tangkapan layar di Panduan Pengguna Edisi Komunitas Magento.

Jika Anda tidak dapat mereproduksi masalah dalam tema default, tema Anda rusak, silakan hubungi vendor tema. Kami tidak memberikan dukungan untuk tema pihak ketiga, terutama yang komersial.

Apa sekarang?

Anda menemukan kesalahan nyata, orang dapat mereproduksi, itu dapat direproduksi dalam tema default? Hebat, tolong buka pertanyaan, dan kami memberikan yang terbaik untuk membantu.

Dalam pertanyaan:

  • jelaskan apa yang Anda lakukan
  • kesalahan apa yang muncul
  • ada sesuatu dalam file log?
  • mungkin screenshot dari kesalahan
Fabian Blechschmidt
sumber
5
  1. Pertama-tama Anda harus mengaktifkan mode Pengembang
  2. Anda juga dapat mengaktifkan untuk menampilkan kesalahan di index.php: ini_set ('display_errors', 1);
  3. Kompilasi ekstensi xDebug dengan IDE cerdas (PhpStrom / eclipse)
  4. Nonaktifkan modul khusus dan pihak ketiga
  5. Tinjau log pengecualian dan kesalahan Anda, selesaikan kesalahan yang tercantum pada log pengecualian
  6. Periksa ikal dan ekstensi mcrypt harus dimuat di server Anda
  7. Periksa izin Folder dan file chown -R sonassi: apache / home / path / public_html / find / home / path / public_html / -type d -exec chmod 775 {} \; temukan / home / path / public_html / -type f -exec chmod 664 {} \;
  8. Perbarui izin media dan direktori var 0777 jika tidak disetel
  9. Mulai IDE (phpstrom), lalu atur titik awal debugger pada index.php 10.Tekan F8 dan lanjutkan hingga Anda mendapat kesalahan

Untuk menggunakan langkah-langkah di atas Anda pasti mendapatkan kesalahan.

Abhishek Gupta
sumber
1
Saya menghargai jawaban Anda tetapi alih-alih menjawab pertanyaan yang sudah menerima jawaban mengapa Anda tidak bisa menjawab pertanyaan
Dh47
3
@ Dh47 Bagi saya, apa yang Abhishek lakukan adalah benar. Saya hanya ingin menyebutkan bahwa, menjawab pertanyaan yang sudah diterima masih relevan dan penting. Sebenarnya situs kami (Magento SE) tidak memiliki aspek penting ini. Sangat penting untuk memiliki ransum jawaban 2,5 untuk keluar dari beta. Saat ini kami hanya memiliki rasio jawaban 1,6. Jadi banyak jawaban untuk pertanyaan yang sama harus dihargai. Jangan tinggalkan pertanyaan tanpa menjawab karena pertanyaan itu memiliki jawaban yang diterima. Jika Anda memiliki satu poin lagi untuk ditambahkan, Anda harus menjawab.
Rajeev K Tomy
-1

Debug Backtrace

Ini adalah fungsi yang baik untuk men-debug panggilan fungsi di magento.

Tambahkan fungsi ini di include / config.php atau buat file baru dan letakkan semua fungsi php yang biasa Anda gunakan.

function back_trace ($ exit = true) {
  $ call_back_methods = '';
  $ call_back_methods. = '';
  $ call_back_methods. = 'SNFunction NameLine NumberFile Name';

  $ counter = 1;
  foreach (debug_backtrace () sebagai $ index => $ data) {
    // jika (0 == $ indeks) melanjutkan;

    $ call_back_methods. = ''. $ counter ++. '';
    $ call_back_methods. = ''. $ data ['function']. '';
    $ call_back_methods. = ''. $ data ['baris']. '';
    $ call_back_methods. = ''. $ data ['file']. '';
  }

  $ call_back_methods. = '';

  cetak $ call_back_methods;

  if (true == $ exit) keluar;
}

OutPut akan menjadi

masukkan deskripsi gambar di sini

Somnath
sumber