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!
- Apakah desain saya salah?
- Apakah modul pihak ke-3 salah?
- 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.
extensions
core
debug
theme
Ben Lessani - Sonassi
sumber
sumber
Jawaban:
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
.htaccess
file root dokumen Anda - cukup taruh ini di atas.Untuk pengguna Nginx / FastCGI
Dalam konfigurasi virtualhost Nginx Anda, baik dalam
location .php {
direktif akhir , atau dalamfastcgi_params
file (jika Anda memiliki satu yang ditentukan)Solusi sementara / Universal
Untuk platform apa pun
Edit bootstrap Magento
index.php
di root dokumen Anda dan batalkan komentar pada baris berikut: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
.htaccess
file root dokumen Anda - cukup taruh ini di atas.Untuk pengguna Nginx / fastcgi
Dalam konfigurasi virtualhost Nginx Anda, baik dalam
location .php {
direktif akhir , atau dalamfastcgi_params
file (jika Anda memiliki satu yang ditentukan)Solusi sementara / Universal
Edit bootstrap Magento
index.php
di root dokumen Anda dan buatif
pernyataan itu selalu benar, atau diaktifkan untuk IP spesifik Anda.atau
Periksa izin Anda
Izin yang tidak benar akan menyebabkan banyak masalah, banyak yang tidak mudah ditemukan pada pandangan pertama.
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 Apacheapache
dan 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 umumwww-data
)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.
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
,/var
atau sesuatu yang lain, ganti sesuai.Sekarang ACL diaktifkan, kita dapat mengatur aturan ACL dan mengelompokkan bit yang lengket:
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 setumask(0)
diindex.php
, bagaimanapun, itu akan kepentingan Anda untuk mengubah ini.Dalam
index.php
mengubahumask
garis yang Anda buatDan di lingkungan BASH Anda untuk SSH, atur ini di Anda
.bashrc
atau.bash_profile
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
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.
.tmp
.tmp
Kemudian jika salah satu menghasilkan perbaikan, ganti nama semua file di dalam direktori layout menjadi
.tmp
- (untuk pengguna SSHls | xargs -I {} mv {} {}.tmp
ataurename 's/^/.tmp/' *
)Kemudian secara bertahap aktifkan setiap file 1 per 1 hingga teratasi.
Jika ini tidak menyelesaikan masalah Anda
Ada potensi bahwa Anda
base/default
atauenterprise/default
direktori 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:
Anda juga dapat mengambil kesempatan ke
diff
dua direktori jika Anda ingin memverifikasi perubahan apa pun.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
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.xml
file 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
Kemudian nonaktifkan komunitas
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
.tmp
(untuk pengguna SSHls | xargs -I {} mv {} {}.tmp
ataurename 's/^/.tmp/' *
).tmp
dari nama fileJika masalah tidak terselesaikan
Maka tidak menutup kemungkinan inti itu sendiri terkontaminasi. Inti utama PHP Magento terdiri dari
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:
Kemudian jika masalah masih belum terselesaikan, ganti
lib
direktori jugaPada 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
sumber
755
dan644
izin? Atau apakah Anda punya alasan khusus untuk merekomendasikan775
dan664
?rwx
untuk 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 kerwx
file sebagaimana mestinya.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.
Mode pengembangan
Anda ingin memiliki kesalahan nyata, bukan halaman "kesalahan terjadi" yang jelek yang diberikan magento secara normal.
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.php
file Anda di folder root magento, tergantung pada versinya, Anda menemukan baris ini di sekitar baris 73: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:
Jika Anda tidak tahu ip Anda karena alasan apa pun, Anda dapat menampilkan kesalahan untuk semua orang.
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:
Setel
Enabled
ke Ya dan Anda melihat lebih banyak kesalahan dan debug pesan masuksystem.log
dan masukexception.log
Apakah ini masalah tema?
Anda memiliki tema sendiri, ini dikonfigurasi di backend di sini:
Sistem> Konfigurasi> Desain
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:
sumber
Untuk menggunakan langkah-langkah di atas Anda pasti mendapatkan kesalahan.
sumber
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.
OutPut akan menjadi
sumber