Κεφάλαιο 14 · 14.6
Σφάλματα μετά από αναβάθμιση PHP και εύρεση του αρχείου καταγραφής σφαλμάτων
Αυξήσατε την έκδοση PHP και τώρα η ιστοσελίδα σας εμφανίζεται λευκή, δείχνει ένα μήνυμα σφάλματος ή κάποιο τμήμα της δεν λειτουργεί πλέον. Αυτό οφείλεται σχεδόν πάντα σε ένα plugin, ένα θέμα εμφάνισης ή δικό σας κώδικα που δεν είναι συμβατός με τη νέα έκδοση. Μην πανικοβάλλεστε: επαναφέρετε την παλιά έκδοση μέσα σε ένα λεπτό και στη συνέχεια εξετάζετε με την ησυχία σας τι πήγε στραβά.
Βήμα 1: επαναφέρετε την παλιά έκδοση
Μεταβείτε στο Select PHP version, επιλέξτε ξανά την έκδοση που είχατε πριν και κάντε κλικ στο Apply (δείτε Η επιλογή της έκδοσης PHP (Select PHP version)). Η ιστοσελίδα σας θα λειτουργήσει τότε αμέσως ξανά όπως πριν. Αν είχατε προσαρμόσει επεκτάσεις ή επιλογές στη νέα έκδοση, αυτές παραμένουν αποθηκευμένες για μια επόμενη προσπάθεια.
Βήμα 2: αναζητήστε το μήνυμα σφάλματος στο αρχείο καταγραφής σφαλμάτων
Η PHP καταγράφει τα σφάλματα στο Error log του domain σας. Εκεί αναγράφεται ακριβώς ποιο αρχείο και ποια γραμμή προκαλεί το πρόβλημα.
- Στο DirectAdmin, κάντε κλικ κάτω από το System Info & Files στο Site summary & logs.
- Κάντε κλικ στο domain σας στο Error log.
- Κοιτάξτε τις τελευταίες γραμμές, στο κάτω μέρος. Αναζητήστε γραμμές με PHP Fatal error, PHP Parse error ή PHP Warning (1).

Περισσότερα για τα αρχεία καταγραφής διαβάζετε στο Site summary & logs: το foutlog και το toegangslog.
Βήμα 3: κατανοήστε το μήνυμα
Στο μήνυμα αναγράφεται η διαδρομή του αρχείου. Από αυτήν μπορείτε συνήθως να δείτε ποιο plugin ή ποιο θέμα εμφάνισης είναι ο ένοχος. Μερικά παραδείγματα:
| Βλέπετε στο μήνυμα | Σημασία |
|---|---|
| .../wp-content/plugins/όνομα-plugin/... | Αυτό το plugin δεν λειτουργεί στη νέα έκδοση. Ενημερώστε το ή αναζητήστε αντικαταστάτη αν δεν συντηρείται πλέον. |
| .../wp-content/themes/όνομα-θέματος/... | Το θέμα εμφάνισής σας είναι πολύ παλιό. Ενημερώστε το ή ζητήστε από τον δημιουργό μια ενημέρωση. |
| Call to undefined function mysql_connect() | Πολύ παλιός κώδικας που χρησιμοποιεί ακόμα τις συναρτήσεις πριν από την PHP 7. Αυτός ο κώδικας πρέπει να ξαναγραφτεί. |
| Call to undefined function με διαφορετικό όνομα συνάρτησης | Συχνά λείπει μια επέκταση. Δείτε ποια επέκταση αντιστοιχεί σε αυτή τη συνάρτηση και ενεργοποιήστε την (δείτε Ενεργοποίηση και απενεργοποίηση PHP extensions). |
| Allowed memory size of ... bytes exhausted | Το script δεν έχει αρκετή μνήμη. Αυξήστε το memory_limit (δείτε PHP-επιλογές: upload_max_filesize, memory_limit και max_execution_time). |
| Maximum execution time of ... seconds exceeded | Το script χρειάστηκε πολύ χρόνο. Αυξήστε το max_execution_time ή εξετάστε γιατί είναι τόσο αργό. |
Βήμα 4: ενημερώστε και δοκιμάστε ξανά
- Δημιουργήστε ένα αντίγραφο ασφαλείας (δείτε Backup and Restore: δημιουργία δικού σας αντιγράφου ασφαλείας στο DirectAdmin).
- Ενημερώστε το WordPress (ή το άλλο λογισμικό σας), το θέμα εμφάνισής σας και όλα τα plugin σας, ενώ η παλιά έκδοση PHP είναι ακόμα ενεργή.
- Καταργήστε τα plugin που δεν χρησιμοποιείτε.
- Ενεργοποιήστε ξανά τη νέα έκδοση PHP και δοκιμάστε ξανά την ιστοσελίδα σας. Ελέγξτε ξανά και το αρχείο καταγραφής σφαλμάτων.
Συμβουλή: Θέλετε πρώτα να κάνετε δοκιμή χωρίς να επηρεαστούν οι επισκέπτες; Δημιουργήστε με το Installatron ένα αντίγραφο της ιστοσελίδας σας σε ένα subdomain (δείτε Κλωνοποίηση και δημιουργία περιβάλλοντος δοκιμών (staging)) και ρυθμίστε μόνο αυτόν τον φάκελο στη νέα έκδοση μέσω .htaccess (δείτε PHP-ρυθμίσεις ανά φάκελο και μέσω .htaccess).
Προσωρινή εμφάνιση σφαλμάτων στη σελίδα
Βλέπετε μόνο μια λευκή οθόνη και δεν υπάρχει τίποτα χρήσιμο στο αρχείο καταγραφής σφαλμάτων; Τότε μπορείτε να εμφανίσετε προσωρινά τα σφάλματα στην ίδια τη σελίδα. Στο Select PHP version, στην καρτέλα Options, ενεργοποιήστε την επιλογή display_errors. Ανοίξτε ξανά τη σελίδα: τώρα θα δείτε το μήνυμα σφάλματος. Απενεργοποιήστε αμέσως μετά ξανά το display_errors, καθώς ένα τέτοιο μήνυμα μπορεί να αποκαλύψει πληροφορίες για την ιστοσελίδα σας σε οποιονδήποτε.
Αν χρησιμοποιείτε WordPress, μπορείτε επίσης να το κάνετε με αυτές τις γραμμές στο wp-config.php, πάνω από τη γραμμή That's all, stop editing!: define('WP_DEBUG', true); και define('WP_DEBUG_LOG', true);. Το WordPress θα καταγράφει τότε τα σφάλματα στο wp-content/debug.log. Αφαιρέστε τις γραμμές αυτές μετά, ή ορίστε τις σε false.
Προτιμάτε να το αναλάβουμε εμείς;
Δεν τα καταφέρνετε, ή η ιστοσελίδα σας δεν έχει ενημερωθεί εδώ και χρόνια; Με την αναβάθμιση PHP κάνουμε την ιστοσελίδα σας συμβατή με μια σύγχρονη έκδοση PHP, για σταθερή τιμή. Αν δεν τα καταφέρουμε, σας επιστρέφουμε τα χρήματά σας.
