Πρόβλημα με αναβάθμιση στο WordPress σε PHP 7.4 στο Apache2 σε Ubuntu 18.04

Έχω ένα website σε Wordpress 5.5.5 σε Ubuntu 18.04. Η PHP έκδοση που τρέχει είναι η 7.2.24 και κάθε φορά που μπαίνω στο wp-admin μου ζητάει να κάνω αναβαθμίσω σε έκδοση 7.4.x που είναι πιο γρήγορη, πιο ασφαλή κτλ.
Ακολούθησα τις οδηγίες από εδώ Upgrade WordPress to PHP 7.4 on Apache running on Ubuntu (techverse.net) και η εγκατάσταση ολοκληρώθηκε χωρίς πρόβλημα. Τώρα έχω 3 εκδώσεις PHP στον server…


… αν γράψω php -v μου επιστρέφει PHP 8.0.10.

Γράφω sudo a2dismod php7.2 για να απενεργοποιήσω την php7.2 από τον apache2, μετά sudo a2enmod php7.4 για να βάλω default την 7.4, και τέλος sudo service apache2 restart για επανεκκίνηση και χαλάει και το website και το wp-admin (μόλις πάω να μπω στο website μου βγάζει να σώσω το edit.php ή το upload.php κτλ). Δεν χαλάει όμως το Virtualmin που το έχω για τη διαχείριση.
Τι κάνω λάθος?

Σημ. με 7.2 παίζει χωρίς πρόβλημα.

Από wordpress δεν ξέρω και πολλά πράματα, οπότε θα πρότεινα τα εξής:

Όρισε ως default php στο σύστημά σου την 7.4:
sudo update-alternatives --config php και επέλεξε την 7.4

Αν συνεχίζει να είναι broken το wp σου, τότε επέστρεψε στην παλιά php ( sudo a2dismod php7.4 και sudo a2enmod php7.2 ), ξανακάνε system default την php 7.2 (με το update-alternatives) και κατόπιν μπες στο control panel του wp, τσέκαρε ότι έχεις κάνει update τα πάντα στην τελευταία έκδοση (wp, plugins, themes) και βάλε κάποιον php compatibility checker, για να βεβαιωθείς ότι ό,τι έχεις είναι συμβατό με php 7.4

Η εντολή purge των παλαιών εκδόσεων, πρέπει να είναι η λύση απ’ ότι βλέπω σε αυτόν τον οδηγό:
https://danielbrinneman.com/update-to-php-7-4-on-ubuntu-18-04-on-digital-ocean-for-wordpress/
Τέλος στα σχόλια του ίδιου οδηγού για την έκδοση 8 της php, δίνεται η παρακάτω λύση:

sudo apt-get purge php8.*
sudo apt-get autoclean
sudo apt-get autoremove

sudo systemctl restart apache2

Δεν το έχω δοκιμάσει όμως στην πράξη.

Επίσης σημειώνεται από τον δημιουργό του οδηγού ότι:
“At root, remove all versions of PHP except for the most recent version 7.3. I kept it while going through these steps as a safety blanket …”

Αυτό που προτείνεις - ουσιαστικά σβήνοντας (μαζί με configs - αυτό κάνει παραπάνω το purge σε σχέση με το remove) την php8 - κάνει το update-alternatives (που περιγράφω παραπάνω) κρατώντας και την php8…

To apt-get autoremove καλό είναι να ελέγχει κανείς τι πρόκειται να σβήσει πριν πατήσει το Yes…

Επίσης, συνειδητοποιώ βλέποντας τον οδηγό που λινκάρεις ότι σημαντικό είναι να δει ο @ManVal ότι όλα τα php7.2 πακέτα που έχει εγκατεστημένα, τα έχει εγκατεστημένα και για την php7.4.

2 «Μου αρέσει»

update-alternatives, λοιπόν.
Το λέει και από μόνη της η ονομασία.
Δεν την έχω δει πολλές φορές σαν εντολή και δεν θυμάμαι να την έχω χρησιμοποιήσει αρκετά.
Ευχαριστώ @tsapi για την επεξήγηση.
Επίσης και άλλη φορά έχουν αναφερθεί (δυστυχώς δε θυμάμαι από ποιον) “ενδοιασμοί” στο φόρουμ για την autoremove (αλήθεια πως γίνεται ο έλεγχος) και ότι είναι καλύτερα να προτιμάμε την clean.
Παρόλαυτα την βλέπουμε παντού.

Σημείωση.
Δυστυχώς δεν δουλεύω αυτή την περίοδο σε κάποια εγκατάσταση WordPress, αλλά και αν δούλευα, θα διέφερε με αυτή του @ManVal σε συνδυασμό με τον virtualmin.
Τι γίνεται σε αυτές τις περιπτώσεις;
Θα ήθελα να δω παρόμοιο νήμα στο φόρουμ, σαν πρόταση επίλυσης ζητημάτων, εκτός αν υπάρχει ήδη.
Πώς αντιμετωπίζονται από τους προγραμματιστές παρόμοιες καταστάσεις απομακρυσμένα.
Με ποια εργαλεία, ποιες επεκτάσεις browser, ποια μέθοδο;
Ίσως αυτό ενδιέφερε και τους εκπαιδευτικούς του φόρουμ.
Θέλω να πω, κάνει για παράδειγμα ο @ManVal με κάποιον τρόπο, ακριβή προσομοίωση της εγκατάστασης WordPress με όλα τα config, και μοιράζεται τις δυσλειτουργίες και τον πονοκέφαλο διαδικτυακά;
Είναι δυνατόν να γίνει export η όλη εργασία και να αναζητηθούν λύσεις συνεργατικά;
Θα μου άρεσε να γνωρίζω τη διαδικασία αυτή.
Ακόμα περισσότερο θα με ενδιέφερε να μάθω, κάνοντας πρακτική, σε ένα φιλόδοξο έργο, γιατί όχι ακόμα και μέσα από το φόρουμ.

Στο apt το autoremove και το clean κάνουν διαφορετικά πράματα.
Το clean σβήνει τα downloaded πακέτα από την cache του apt. H χρήση του είναι ασφαλέστατη.
Το autoremove σβήνει πακέτα που εγκαταστάθηκαν ως dependencies άλλων πακέτων αλλά πλέον δεν χρειάζονται.
Το autoremove μπορεί να προκαλέσει ίσως πρόβλημα (αν απεγκαταστήσει τελικά κάποιο πακέτο το οποίο χρειάζεται κάπου στο σύστημα για άλλο λόγο? - κουλόν αλλά ίσως όχι απίθανο).
Στην πράξη δεν μου έχει τύχει ποτέ για έναν κυρίως λόγο: βλέπω τόσο μεγάλη λίστα για τα προς αφαίρεση πακέτα που μου παγώνει το αίμα στις φλέβες, οπότε και τελικά δεν κάνω autoremove. :grimacing:

Πραγματικά δεν ξέρω. Εγώ προσωπικά το μανατζάρισμα το κάνω με command line.
Παλιότερα χρησιμοποιούσα πολύ (και τώρα ενίοτε σε μία μόνο εγκατάσταση) το ispconfig, το οποίο μου φάνηκε και μου φαίνεται πολύ καλό. Φαντάζομαι μπορεί κανείς να δώσει προσωρινή πρόσβαση σε περιορισμένο κομμάτι του server - δεν το έχω ψάξει όμως.
Πάντα μπορεί κανείς να δώσει προσωρινό sudo access, αλλά προϋποθέτει απόλυτη εμπιστοσύνη.

Κάθε πρόβλημα έχει διαφορετική λύση αλλά ο τρόπος σκέψης με τον οποίον δομείται η αναζήτηση της λύσης πρέπει να έχει μια στοιχειώδη λογική.

Κοινώς δεν κάνουμε copy paste ότι βρουμε απο εδώ και απο εκεί, δεν κάνουμε format γιατί “που να ψάχνω τώρα” και φυσικά δεν προτείνουμε αλλαγή διανομής ως “λύση”

Η απομακρυσμένη διαχείριση δύναται να γίνει απο τερματικό αλλά και γραφικά ανάλογα την περίπτωση.

Με σκότωσες με το επεκτάσεις browser :smiley:

Εξ αυτού ορμώμενος θα παρότρυνα και τους εκπαιδευτικούς να γράψουν και αυτοί κάποιο άρθρο σχετικά με τη διαδικασία που ακολουθούν στα μαθήματα τους (τα σχετιζόμενα με υπολογιστές προφανώς). Εκτιμώ ότι όλοι θα κερδίσουμε από αυτό.

1 «Μου αρέσει»

Δολοφονικό έτσι;
Εννοούσα λύσεις σαν το gitpod για παράδειγμα.

Επικίνδυνη λύση όταν ειδικά θες να πακετάρεις και δεν ξέρεις τι εξαρτήσεις χρειάζονται.
Για να ευλογούμε και τα γένια μας

Όσες φορές και να το διαβάζω βλέπω ότι κάνω ακόμη λάθη.

1 «Μου αρέσει»

@ManVal Το πώς κατέληξες τελικά με τρεις διαφορετικές εκδόσεις της PHP αντί για δύο, μένει να εξηγηθεί καθώς στον οδηγό που παρέθεσες δεν είδα να αναφέρεται κάπου η έκδοση 8.xx.

Θα πρέπει να θυμάσαι όμως δύο βασικά πράγματα:

  1. Δεν είναι υποχρεωτικό να αναβαθμίσεις στην επόμενη έκδοση της PHP αμέσως μόλις δεις τη σχετική ειδοποίηση, εκτός και αν η τρέχουσα έκδοσή σου έχει άλυτα κενά ασφάλειας ή αντιμετωπίζεις κάποιο σοβαρό πρόβλημα που ξέρεις ότι λύνεται στην επόμενη έκδοση.
  2. Πριν κάνεις την αναβάθμιση, θα πρέπει να έχεις δημιουργήσει μια δοκιμαστική εγκατάσταση (ένας ενδεικτικός οδηγός) η οποία θα είναι 100% όμοια με αυτήν που έχεις, ώστε να τσεκάρεις ότι όλα θα δουλεύουν όπως πρέπει μετά από την αναβάθμιση.

Γενικότερα, οι εκδόσεις της PHP εδώ και κάποια χρόνια δεν έχουν απόλυτη προς τα πίσω συμβατότητα. Αυτό σημαίνει ότι θα πρέπει να βεβαιώνεσαι ότι το θέμα που χρησιμοποιείς, τυχόν παραμετροποιήσεις που έχεις στο αρχείο functions.php, καθώς και τα πρόσθετά σου, είναι συμβατά με την καινούργια έκδοση.

Θα ήταν προτιμότερο όμως να μας δώσεις κάποια error logs (μπορείς να τα ενεργοποιήσεις έτσι) ώστε να είναι πιο εύκολο να εντοπιστεί πού βρίσκεται το πρόβλημα.

«Pro» tip: ποτέ δεν ακολουθούμε έναν οδηγό κατά γράμμα αλλά πρώτα βρίσκουμε τα σημεία στα οποία διαφέρει το σύστημα που παρουσιάζεται στον εκάστοτε οδηγό με το δικό μας. Λόγου χάρη, ένα WordPress χωρίς καθόλου πρόσθετα και ένα άλλο με ένα και μόνο πρόσθετο ενδέχεται να έχουν τεράστιες διαφορές.

EDIT: οι ασυμβατότητες της έκδοσης 7.4.x.

2 «Μου αρέσει»

Με αγχώσατε! Μια απλή αλλαγή στην PHP ήθελα να κάνω, όχι να στείλω άνθρωπο στον Άρη.

Για την ώρα θα ακολουθήσω την παλιά και καλή συμβουλή που λέει “ότι παίζει δεν το πειράζεις”.
Αλλά επειδή με τρώει και η περιέργεια θα κάνω μερικές προσπάθειες (μάλλον Σαββατοκύριακο που θα έχω χρόνο). Έτσι και αλλιώς πριν κάνω κάθε αλλαγή παίρνω backup/snapshot όλο το μηχάνημα οπότε και κάτι να πάει στραβά θα κάνω restore.

Ευχαριστώ για τις συμβουλές… θα σας κρατάω ενήμερους με τις δοκιμές που θα κάνω.

2 «Μου αρέσει»