Ενότητα 5 · 5.4
Λιγότερα είναι περισσότερα: καθαρισμός και επίλυση συγκρούσεων
Ενότητα 5: Θέματα εμφάνισης και πρόσθετα · Χρόνος ανάγνωσης: 9 λεπτά
Μαθησιακός στόχος: Μετά από αυτό το μάθημα θα μπορείτε να καθαρίζετε τα πρόσθετα και να εντοπίζετε και να επιλύετε μόνοι σας μια σύγκρουση ή μια λευκή σελίδα.
Βασικές έννοιες: απενεργοποίηση έναντι διαγραφής, ανενεργός κώδικας, κρίσιμο σφάλμα, λειτουργία ανάκτησης (recovery mode), Υγεία ιστότοπου, λειτουργία αντιμετώπισης προβλημάτων, μετονομασία φακέλου προσθέτου, WP_DEBUG, WP_DEBUG_LOG, debug.log, αρχείο καταγραφής σφαλμάτων
Η απενεργοποίηση δεν είναι διαγραφή
Στα Πρόσθετα μπορείτε να απενεργοποιήσετε ή να διαγράψετε ένα πρόσθετο. Η διαφορά:
- Απενεργοποίηση: το WordPress δεν φορτώνει πλέον το πρόσθετο. Τα αρχεία όμως παραμένουν στο
wp-content/plugins/και συχνά μπορούν ακόμα να ζητηθούν απευθείας μέσω του web server. Αν υπάρχει κενό ασφαλείας σε ένα μεμονωμένο αρχείο PHP αυτού του προσθέτου, το κενό εξακολουθεί να υπάρχει. Οι εισβολείς σαρώνουν για γνωστά ευάλωτα αρχεία, όχι για ενεργά πρόσθετα. - Διαγραφή: τα αρχεία αφαιρούνται. Ορισμένα πρόσθετα κατά τη διαγραφή καθαρίζουν επίσης τις ρυθμίσεις και τους πίνακές τους στη βάση δεδομένων· άλλα τα αφήνουν.
Αν δεν χρησιμοποιείτε πλέον ένα πρόσθετο, διαγράψτε το. Η απενεργοποίηση είναι μόνο για λίγο (κατά την αναζήτηση ενός προβλήματος). Το ίδιο ισχύει για τα θέματα εμφάνισης (μάθημα 2.4).
Καθαρισμός: ένας σταθερός γύρος
Μία φορά ανά τρίμηνο (μάθημα 9.4) ελέγξτε ένα προς ένα τα πρόσθετά σας. Για κάθε πρόσθετο:
- Για ποιο σκοπό υπάρχει; Αν δεν το θυμάστε πια, ερευνήστε το. Συχνά αποδεικνύεται ότι ένα πρόσθετο εγκαταστάθηκε κάποτε για ένα μόνο πράγμα και δεν αφαιρέθηκε ποτέ.
- Χρησιμοποιείται ακόμα; Ένα πρόσθετο slider ενώ δεν υπάρχει πουθενά slider, ένα πρόσθετο φορμών ενώ η σελίδα επικοινωνίας σας χρησιμοποιεί άλλη φόρμα.
- Μπορείτε να κάνετε χωρίς αυτό; Το κάνει ήδη το WordPress, το θέμα εμφάνισης ή κάποιο άλλο πρόσθετο (μάθημα 5.3);
- Συντηρείται ακόμα; Πότε ενημερώθηκε τελευταία φορά, υπάρχει ακόμα στον κατάλογο προσθέτων;
Κάντε τον καθαρισμό πρώτα σε περιβάλλον δοκιμών (staging) (μάθημα 8.3) ή τουλάχιστον δημιουργήστε ένα αντίγραφο ασφαλείας, και διαγράφετε ένα πρόσθετο κάθε φορά, ώστε να ξέρετε τι πήγε στραβά αν κάτι πάει στραβά. Προσέξτε τα shortcodes: αν διαγράψετε ένα πρόσθετο που παρείχε το [formulier id="2"], τότε αυτό το κείμενο θα εμφανίζεται κατά λέξη στη σελίδα σας.
Όταν κάτι πάει στραβά: το κρίσιμο σφάλμα
Μετά από μια ενημέρωση, ένα νέο πρόσθετο ή μια αναβάθμιση PHP βλέπετε ξαφνικά:
Υπάρχει ένα κρίσιμο σφάλμα σε αυτόν τον ιστότοπο.ή μια εντελώς λευκή σελίδα. Αυτό σημαίνει: η PHP σταμάτησε με ένα μοιραίο σφάλμα (fatal error) πριν δημιουργηθεί η σελίδα (μάθημα 1.2). Συνήθως οφείλεται σε ένα πρόσθετο ή θέμα εμφάνισης που δεν είναι συμβατό με κάτι άλλο: ένα άλλο πρόσθετο, τη νέα έκδοση του WordPress ή την έκδοση PHP.
Από το WordPress 5.2 και μετά, το WordPress κάνει τότε δύο πράγματα:
- στέλνει ένα email στη διεύθυνση του διαχειριστή με το πρόσθετο ή το θέμα εμφάνισης που προκάλεσε το σφάλμα, καθώς και έναν ειδικό σύνδεσμο·
- με αυτόν τον σύνδεσμο συνδέεστε στη λειτουργία ανάκτησης (recovery mode): η διαχείριση λειτουργεί τότε, με το πρόσθετο που προκάλεσε το σφάλμα προσωρινά απενεργοποιημένο, ώστε να μπορείτε να το ενημερώσετε, να το αντικαταστήσετε ή να το διαγράψετε.
Γι' αυτό είναι τόσο σημαντική μια διεύθυνση διαχειριστή που πραγματικά διαβάζετε (μάθημα 2.2).
Αναζήτηση μόνοι σας: τα βήματα
Δεν ήρθε email ή δεν λειτουργεί η λειτουργία ανάκτησης; Έτσι θα το βρείτε μόνοι σας.
1. Ελέγξτε το αρχείο καταγραφής σφαλμάτων
Το σφάλμα βρίσκεται σχεδόν πάντα στο αρχείο καταγραφής σφαλμάτων του web server ή της PHP. Στο DirectAdmin το βρίσκετε στα αρχεία καταγραφής (logs) του domain σας. Αναζητήστε μια γραμμή με PHP Fatal error και την ώρα της προσπάθειάς σας:
PHP Fatal error: Uncaught Error: Call to undefined function create_function()
in /home/gebruiker/domains/example.com/public_html/wp-content/plugins/oude-slider/slider.php:42Η διαδρομή σάς λέει ποιος φταίει: εδώ το πρόσθετο στον φάκελο oude-slider. Το υπόλοιπο της γραμμής εξηγεί γιατί (εδώ: μια συνάρτηση που αφαιρέθηκε στην PHP 8, μάθημα 8.4).
2. Ενεργοποιήστε το debug log (όχι την εμφάνιση στην οθόνη)
Αν δεν υπάρχει κάτι χρήσιμο στο αρχείο καταγραφής σφαλμάτων, προσθέστε στο wp-config.php (πάνω από το σχόλιο «stop editing», δηλαδή «σταματήστε την επεξεργασία»):
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );Το WordPress γράφει τότε όλα τα σφάλματα στο wp-content/debug.log, χωρίς να τα εμφανίζει στους επισκέπτες. Μην το αφήνετε ποτέ ενεργό περισσότερο από όσο χρειάζεται: το debug.log βρίσκεται σε φάκελο που διαθέτει ο web server, και όποιος γνωρίζει τη διεύθυνση μπορεί να το διαβάσει. Περιέχει διαδρομές, μερικές φορές ονόματα χρηστών και άλλες πληροφορίες που βοηθούν έναν εισβολέα. Απενεργοποιήστε το ξανά μετά την αναζήτηση και διαγράψτε το debug.log. Ή αφήστε το WordPress να γράφει το αρχείο καταγραφής έξω από τον φάκελο ιστού, δίνοντας μια διαδρομή στο WP_DEBUG_LOG (για παράδειγμα '/home/gebruiker/logs/wp-debug.log', εφόσον το επιτρέπει ο πάροχος φιλοξενίας σας). Στο μάθημα 7.4 ελέγχετε ότι το debug.log δεν είναι δημόσια προσβάσιμο.
3. Απενεργοποίηση προσθέτου χωρίς διαχείριση
Αν δεν μπορείτε να μπείτε στη διαχείριση, απενεργοποιήστε το ύποπτο πρόσθετο μετονομάζοντας τον φάκελό του, μέσω του File Manager ή μέσω SFTP:
wp-content/plugins/oude-slider γίνεται wp-content/plugins/oude-slider-uitΤο WordPress δεν βρίσκει πλέον το πρόσθετο και το απενεργοποιεί. Αν δεν ξέρετε ποιο είναι, μετονομάστε ολόκληρο τον φάκελο plugins σε plugins-uit: όλα τα πρόσθετα απενεργοποιούνται. Αν ο ιστότοπος λειτουργεί τότε, δημιουργήστε έναν νέο κενό φάκελο plugins, επαναφέρετε τα πρόσθετα ένα προς ένα και ελέγχετε μετά από κάθε πρόσθετο αν το σφάλμα επανεμφανίζεται. Το ίδιο ισχύει για ένα θέμα εμφάνισης: μετονομάστε τον φάκελο του ενεργού θέματος εμφάνισης και το WordPress επιστρέφει σε ένα προεπιλεγμένο θέμα, εφόσον υπάρχει ακόμα (μάθημα 2.4).
4. Συγκρούσεις χωρίς μοιραίο σφάλμα
Δεν είναι κάθε πρόβλημα κρίσιμο σφάλμα. Μερικές φορές μια λειτουργία δεν δουλεύει: ένα κουμπί δεν κάνει τίποτα, η φόρμα δεν αποστέλλεται, ο επεξεργαστής φορτώνει μισός. Τότε συχνά πρόκειται για σύγκρουση μεταξύ δύο προσθέτων ή μεταξύ ενός προσθέτου και του θέματος εμφάνισης. Γι' αυτό είναι χρήσιμο το επίσημο πρόσθετο Health Check & Troubleshooting: στη λειτουργία αντιμετώπισης προβλημάτων απενεργοποιεί όλα τα πρόσθετα μόνο για τη δική σας συνεδρία και μεταβαίνει σε ένα προεπιλεγμένο θέμα εμφάνισης, ενώ οι επισκέπτες βλέπουν κανονικά τον ιστότοπο. Στη συνέχεια τα ενεργοποιείτε ένα προς ένα μέχρι να επανεμφανιστεί το πρόβλημα.
Ελέγξτε επίσης την κονσόλα του προγράμματος περιήγησής σας (F12): τα σφάλματα JavaScript συχνά αναφέρουν το αρχείο και, κατ' επέκταση, το πρόσθετο.
Υγεία ιστότοπου
Στο Εργαλεία > Υγεία ιστότοπου το WordPress ελέγχει ο ίδιος τον ιστότοπό σας: παλιά έκδοση PHP, πρόσθετα και θέματα εμφάνισης που δεν είναι ενεργά, επεκτάσεις PHP που λείπουν, REST API που δεν λειτουργεί, προγραμματισμένες εργασίες που καθυστερούν. Στην καρτέλα Πληροφορίες υπάρχουν όλα τα στοιχεία της εγκατάστασής σας (εκδόσεις, διαδρομές, ρυθμίσεις PHP). Μπορείτε να αντιγράψετε αυτή την καρτέλα και να τη στείλετε όταν ζητάτε βοήθεια. Ρίξτε μια ματιά εδώ μετά από κάθε μεγάλη αλλαγή.
Σύνοψη
- Η απενεργοποίηση αφήνει τα αρχεία στη θέση τους· διαγράψτε τα πρόσθετα και τα θέματα εμφάνισης που δεν χρησιμοποιείτε.
- Κάνετε καθαρισμό κάθε τρίμηνο, ένα πρόσθετο κάθε φορά, με αντίγραφο ασφαλείας ή σε περιβάλλον δοκιμών (staging).
- Σε περίπτωση κρίσιμου σφάλματος, το WordPress στέλνει email με σύνδεσμο προς τη λειτουργία ανάκτησης.
- Το αρχείο καταγραφής σφαλμάτων ή το
debug.logαναφέρει τη διαδρομή του υπαιτίου· απενεργοποιήστε το debug μετά την αναζήτηση, γιατί αλλιώς τοdebug.logείναι δημόσια προσβάσιμο. - Χωρίς διαχείριση απενεργοποιείτε ένα πρόσθετο μετονομάζοντας τον φάκελό του· τις συγκρούσεις τις εντοπίζετε με τη λειτουργία αντιμετώπισης προβλημάτων.
Κουίζ
Άσκηση
Άσκηση A5.4: Είναι το αρχείο debug-log σας μη προσβάσιμο δημόσια; Συμπληρώστε τη διεύθυνση του ιστότοπού σας και αποδείξτε με τον κωδικό που σας δίνει η άσκηση ότι πρόκειται για τον δικό σας ιστότοπο (μια εγγραφή TXT ή ένα μικρό αρχείο). Το πρόγραμμα ζητά το /wp-content/debug.log: σωστό είναι αν αυτό δεν υπάρχει ή απορρίπτεται (404 ή 403). Αν το πρόγραμμα λάβει πίσω ένα αρχείο, το αποτέλεσμα είναι κόκκινο. Επιπλέον, το πρόγραμμα μετρά πόσοι διαφορετικοί φάκελοι προσθέτων εμφανίζονται στο HTML της αρχικής σας σελίδας (μόνο για ενημέρωση).
Άσκηση D5.4: Τακτοποιήστε τη λίστα πρόσθετών σας. Φτιάξτε μια λίστα με όλα τα πρόσθετά σας (ενεργά και ανενεργά): όνομα, σκοπός, χρειάζεται ακόμα (ναι/όχι), εναλλακτική χωρίς πρόσθετο. Διαγράψτε (αφού δημιουργήσετε αντίγραφο ασφαλείας ή σε περιβάλλον δοκιμών (staging)) τα πρόσθετα που δεν χρειάζονται πλέον, ένα κάθε φορά, και ελέγξτε μετά από κάθε διαγραφή αν ο ιστότοπος λειτουργεί ακόμα. Σημειώστε πόσα πρόσθετα είχατε και πόσα απέμειναν, καθώς και αν έμειναν shortcodes που χρειάστηκε να καθαρίσετε.
Άσκηση D5.4: Τακτοποιήστε τη λίστα πρόσθετών σας
Αυτή την άσκηση την κάνετε μόνοι σας: κανείς δεν την ελέγχει. Σημειώστε τι έχετε κάνει και επισημάνετε την άσκηση ως ολοκληρωμένη.
Ο αριθμός μετά είναι μικρότερος ή ίσος, και για κάθε πρόσθετο που παραμένει υπάρχει αιτιολόγηση. Τα ανενεργά πρόσθετα τα διαγράφετε: ακόμη και ανενεργός κώδικας μπορεί να περιέχει κενό ασφαλείας.
Τα τικ και οι σημειώσεις σας παραμένουν μόνο σε αυτό το πρόγραμμα περιήγησης· δεν τα στέλνουμε πουθενά. Αν έχετε εγγραφεί, αποθηκεύουμε στο Τα μαθήματά μου μόνο ότι έχετε ολοκληρώσει την άσκηση.
Περαιτέρω ανάγνωση
Αυτά τα άρθρα περιγράφουν τα βήματα στους πίνακες ελέγχου της WebOké· σε άλλους πίνακες ελέγχου λειτουργούν με παρόμοιο τρόπο.
- Εγχειρίδιο DirectAdmin 18.1: Η ιστοσελίδα μου είναι λευκή ή εμφανίζει σφάλμα 500
- Σφάλμα 500 ή «κρίσιμο σφάλμα» στον ιστότοπό σας (και μετά από ενημέρωση του WordPress)
- Εγχειρίδιο DirectAdmin 14.6: Σφάλματα μετά από αναβάθμιση PHP και εύρεση του αρχείου καταγραφής σφαλμάτων
- Εγχειρίδιο DirectAdmin 17.2: Site summary & logs: το foutlog και το toegangslog
- Πώς μπορώ να κάνω debug στην PHP χωρίς να αλλάξω το php.ini;
- Αποσφαλμάτωση στο WordPress (developer.wordpress.org, Αγγλικά): https://developer.wordpress.org/advanced-administration/debug/debug-wordpress/
- Επιλογή, αξιολόγηση και καθαρισμός των WordPress plugins
