# Πολλές εκδόσεις PHP σε έναν διακομιστή: patch σε καθεμία ξεχωριστά

> Πολλές εκδόσεις PHP σε έναν διακομιστή: εντοπισμός όλων των εγκαταστάσεων, διευκρίνιση προέλευσης και ευθύνης, ξεχωριστό patch, επανεκκίνηση και τεκμηρίωση.

Πηγή: https://phpsos.de/el/blog/mehrere-php-versionen-server/  
Ημερομηνία: 25/10/2026  
Πάροχος: PHP SOS, Επείγουσα βοήθεια PHP και ασφάλεια διακομιστών. Άμεση βοήθεια μέσω WhatsApp: https://wa.me/491736494914?text=%CE%93%CE%B5%CE%B9%CE%B1%20%CF%83%CE%B1%CF%82%2C%20PHP%20SOS%2C%20%CF%87%CF%81%CE%B5%CE%B9%CE%B1%CE%B6%CF%8C%CE%BC%CE%B1%CF%83%CF%84%CE%B5%20%CE%B2%CE%BF%CE%AE%CE%B8%CE%B5%CE%B9%CE%B1%20%CE%BC%CE%B5%20%CF%84%CE%BF%CE%BD%20%CE%B4%CE%B9%CE%B1%CE%BA%CE%BF%CE%BC%CE%B9%CF%83%CF%84%CE%AE%20PHP%20%CE%BC%CE%B1%CF%82.%20%CE%95%CF%84%CE%B1%CE%B9%CF%81%CE%B5%CE%AF%CE%B1%3A%20%E2%80%A6%20%CE%99%CF%83%CF%84%CF%8C%CF%84%CE%BF%CF%80%CE%BF%CF%82%3A%20%E2%80%A6

**Εν ολίγοις:** Όταν σε έναν διακομιστή τρέχουν πολλές εκδόσεις PHP, μετά το PHP2Shell κάθε μία πρέπει να ελεγχθεί, να ενημερωθεί και να επανεκκινηθεί ξεχωριστά. Τυπικές πηγές είναι το λειτουργικό σύστημα, πάνελ φιλοξενίας όπως το Plesk ή το cPanel, τρίτες πηγές όπως το sury.org ή το Remi, το CloudLinux, το LiteSpeed και εκδόσεις που έχουν μεταγλωττιστεί από τον ίδιο τον χρήστη. Μόνο ένας πλήρης κατάλογος από πακέτα, αρχεία και διεργασίες που τρέχουν δείχνει αν πράγματι δεν παραβλέφθηκε καμία έκδοση.

## Η ξεχασμένη έκδοση

Ένας διακομιστής που λειτουργεί εδώ και μερικά χρόνια μαζεύει εκδόσεις PHP όπως ένα πατάρι παλιά έπιπλα. Το πάνελ έφερε τρεις κλάδους, για έναν πελάτη προστέθηκε μια παλαιότερη έκδοση από τρίτη πηγή και το λειτουργικό σύστημα έχει τη δική του. Καθεμία εγκαταστάθηκε κάποτε για καλό λόγο. Μόνο που σήμερα κανείς δεν ξέρει ποια χρειάζεται ακόμη.

Μετά το PHP2Shell αυτό ακριβώς αποτελεί πρόβλημα. Οι διορθώσεις κυκλοφόρησαν στις 21 Οκτωβρίου 2026 για τις εκδόσεις PHP 8.5.12, 8.4.27, 8.3.36 και 8.2.35. Κάθε εγκατάσταση στον διακομιστή τις λαμβάνει όμως με τον δικό της δρόμο, από τον δικό της συντηρητή πακέτου και σε δικό της χρόνο. Για την PHP 8.1 και παλαιότερες υπάρχουν μόνο ελάχιστα backports πηγαίου κώδικα. Όποιος ενημερώνει μόνο την κύρια έκδοση, αφήνει τις άλλες ανοιχτές.

## Από πού προέρχονται οι πολλές εκδόσεις

Η παρακάτω επισκόπηση αναφέρει τυπικές πηγές και παραδείγματα διαδρομών. Οι ακριβείς διαδρομές διαφέρουν ανά έκδοση και διανομή.

| Πηγή | Παράδειγμα διαδρομής | Ποιος παρέχει το patch |
|---|---|---|
| Λειτουργικό σύστημα Debian/Ubuntu | `/usr/bin/php8.3`, `/etc/php/8.3/` | Διανομή |
| Λειτουργικό σύστημα οικογένειας RHEL | `/usr/bin/php`, `/etc/php-fpm.d/` | Διανομή |
| Plesk | `/opt/plesk/php/8.3/` | Plesk |
| cPanel (EasyApache 4) | `/opt/cpanel/ea-php83/` | cPanel |
| CloudLinux alt-php | `/opt/alt/php83/` | CloudLinux |
| Remi Software Collection | `/opt/remi/php83/` | Remi |
| sury.org | `/usr/bin/php8.3` όπως στο σύστημα | sury.org |
| LiteSpeed | `/usr/local/lsws/lsphp83/` | LiteSpeed ή πηγή πακέτων |
| Μεταγλωττισμένο από τον χρήστη | συχνά `/usr/local/bin/php` | Εσείς οι ίδιοι |
| Container | μέσα στην εικόνα | Εκδότης της εικόνας, επανακατασκευή από εσάς |

Ιδιαίτερα ύπουλα είναι τα πακέτα sury.org, επειδή χρησιμοποιούν τις ίδιες διαδρομές με τη διανομή. Το αν ένα `php8.3` προέρχεται από το Debian ή από το sury.org το δείχνει μόνο η πηγή πακέτων. Τις ιδιαιτερότητες περιγράφουν τα άρθρα [Το αποθετήριο sury.org](https://phpsos.de/el/blog/sury-repository-php/) και [Το αποθετήριο Remi](https://phpsos.de/el/blog/remi-repository-php/). Πώς διαχειρίζεται το Plesk τις εκδόσεις του, περιγράφει η σελίδα [Διακομιστής Plesk: έλεγχος και patch των εκδόσεων PHP](https://phpsos.de/el/server/plesk/).

## Εντοπισμός όλων των εγκαταστάσεων PHP

Ένας αξιόπιστος κατάλογος προκύπτει από τρεις οπτικές. Οι εντολές είναι αμιγώς ανάγνωσης και, ανάλογα με τον διακομιστή, μπορεί να τρέχουν για λίγη ώρα.

```bash
# 1. Πακέτα: ό,τι γνωρίζει η διαχείριση πακέτων
dpkg-query -W -f='${Package}\t${Version}\n' '*php*' 2>/dev/null | grep -E "fpm|cli|cgi|mod-php|lsphp"
rpm -qa 2>/dev/null | grep -iE "php.*(fpm|cli|cgi|litespeed)|^php-[0-9]|^ea-php|^alt-php" | sort

# 2. Αρχεία: εκτελέσιμα binaries PHP, και εκτός της διαχείρισης πακέτων
find / -xdev -type f \( -name 'php' -o -name 'php[0-9]*' -o -name 'php-fpm*' -o -name 'php-cgi*' -o -name 'lsphp*' \) -perm -u+x 2>/dev/null

# 3. Διεργασίες: ό,τι τρέχει πραγματικά τώρα, με χρόνο εκκίνησης
ps -eo pid,user,lstart,cmd | grep -E "[p]hp-fpm|[p]hp-cgi|[l]sphp|[a]pache2|[h]ttpd|[f]rankenphp"
```

Αντιπαραβάλλετε τους τρεις καταλόγους. Ένα αρχείο χωρίς πακέτο παραπέμπει σε έκδοση που μεταγλωττίστηκε ή αντιγράφηκε χειροκίνητα. Μια διεργασία χωρίς αντίστοιχο αρχείο μπορεί να υποδεικνύει διαγραμμένη αλλά ακόμη ενεργή εγκατάσταση. Στο Apache ελέγξτε επιπλέον αν έχει φορτωθεί κάποιο module PHP, για παράδειγμα με `apache2ctl -M` ή `httpd -M`. Τα containers και τα pods του Kubernetes εμφανίζονται μόνο εν μέρει σε αυτούς τους καταλόγους και χρειάζονται δικό τους έλεγχο των εικόνων.

## Patch σε κάθε έκδοση ξεχωριστά

Όταν κάθε εγκατάσταση έχει μια γραμμή στον κατάλογό σας, ακολουθεί για καθεμία η ίδια διαδικασία:

1. **Διευκρινίστε την ευθύνη:** Το patch προέρχεται από τη διανομή, από το πάνελ, από τρίτη πηγή ή από εσάς τους ίδιους;
2. **Αξιολογήστε το επίπεδο:** επίσημα διορθωμένη έκδοση, επιβεβαιωμένο backport, ανεπίλυτο ή ανοιχτό.
3. **Ενημερώστε:** μέσω του δρόμου της αντίστοιχης πηγής και όχι μέσω άλλου.
4. **Επανεκκινήστε:** την υπηρεσία αυτής της έκδοσης και όχι μόνο την κύρια υπηρεσία. Στο mod_php τον διακομιστή ιστού. Λεπτομέρειες υπάρχουν στο [Επανεκκίνηση PHP-FPM και όλων των workers](https://phpsos.de/el/php2shell/php-fpm-neustart/).
5. **Ελέγξτε:** συγκρίνετε τον χρόνο εκκίνησης των διεργασιών με τον χρόνο της ενημέρωσης.
6. **Τεκμηριώστε:** έκδοση, επίπεδο πακέτου, τεκμήριο, χρόνος επανεκκίνησης.

Για εκδόσεις για τις οποίες δεν υπάρχει patch, ισχύουν μέχρι τη μετάβαση τα προσωρινά μέτρα του php.net. Εφαρμόστε τα για κάθε έκδοση χωριστά, γιατί κάθε εγκατάσταση έχει το δικό της php.ini και τα δικά της pools.

> **Σημαντικό:**
> Μην ξεχνάτε τη γραμμή εντολών. Τα cronjobs και τα scripts τρέχουν συχνά με άλλη έκδοση PHP από τον ιστότοπο. Και αυτή η έκδοση πρέπει να βρίσκεται σε διορθωμένο επίπεδο, ακόμη κι αν δεν επεξεργάζεται αιτήματα ιστού.

## Ποια έκδοση χρησιμοποιεί η γραμμή εντολών και ποια το container;

Δύο τομείς ξεφεύγουν ιδιαίτερα συχνά από την αναζήτηση. Ο πρώτος είναι η γραμμή εντολών. Σε Debian και Ubuntu το σύστημα εναλλακτικών αποφασίζει ποιο binary κρύβεται πίσω από την εντολή `php`. Το `update-alternatives --display php` δείχνει ποιες εκδόσεις είναι καταχωρισμένες και ποια ισχύει τώρα. Τα cronjobs που καλούν σταθερή διαδρομή όπως `/usr/bin/php7.4` παρακάμπτουν ωστόσο αυτή τη ρύθμιση. Γι' αυτό αξίζει να ρίξετε μια ματιά στα crontabs όλων των χρηστών και στη διαμόρφωση πάνελ που δημιουργούν δικά τους cronjobs.

Ο δεύτερος τομέας είναι τα containers. Ένα container Docker στον διακομιστή φέρνει τη δική του έκδοση PHP, που δεν εμφανίζεται σε κανέναν κατάλογο πακέτων του host. Το `docker ps` δείχνει τα containers που τρέχουν· το αν περιέχουν PHP και σε ποια έκδοση, το αποκαλύπτει μια ματιά στην εικόνα ή ένα `php -v` μέσα στο container. Το patch γίνεται εκεί όχι στον host, αλλά με επανακατασκευή της εικόνας και αντικατάσταση του container.

## Λιγότερα σημαίνει ασφαλέστερα

Ο καλύτερος έλεγχος είναι αυτός που δεν χρειάζεται να γίνει. Κάθε εγκατεστημένη έκδοση PHP διπλασιάζει την προσπάθεια στην επόμενη ευπάθεια. Μετά το PHP2Shell αξίζει γι' αυτό ένας σαφής κανόνας: κάθε έκδοση στον διακομιστή χρειάζεται σκοπό και υπεύθυνο. Ό,τι δεν έχει, απενεργοποιείται πρώτα και μετά από ένα διάστημα παρατήρησης αφαιρείται. Περισσότερα στο άρθρο [Απενεργοποίηση παλιών εκδόσεων PHP στο πάνελ φιλοξενίας](https://phpsos.de/el/blog/alte-php-versionen-abschalten/).

## Πώς βοηθά συγκεκριμένα η PHP SOS;

- Συντάσσουμε για τους διακομιστές σας έναν πλήρη κατάλογο όλων των εγκαταστάσεων PHP από πακέτα, αρχεία, διεργασίες και containers.
- Διευκρινίζουμε για κάθε έκδοση την προέλευση, την ευθύνη και το επίπεδο του patch.
- Στο πλαίσιο της [υπηρεσίας patch PHP](https://phpsos.de/el/leistungen/php-patch-service/) ενημερώνουμε κάθε έκδοση, επανεκκινούμε κάθε υπηρεσία και τεκμηριώνουμε το επίπεδο.
- Μαζί σας αποφασίζουμε ποιες εκδόσεις μένουν και αφαιρούμε ελεγχόμενα τις υπόλοιπες.


## Συχνές ερωτήσεις

**Γιατί τρέχουν στον διακομιστή μου πολλές εκδόσεις PHP;**  
Συχνοί λόγοι είναι πάνελ φιλοξενίας που φέρνουν δικά τους builds PHP, τρίτες πηγές όπως το sury.org ή το Remi για νεότερες εκδόσεις και παλαιότερες εφαρμογές που απαιτούν συγκεκριμένη έκδοση. Συχνά προστίθεται και η έκδοση PHP του λειτουργικού συστήματος.

**Είναι επικίνδυνη μια έκδοση PHP που δεν τη χρησιμοποιεί κανένας ιστότοπος;**  
Όσο είναι εγκατεστημένη και ενεργή ως υπηρεσία, μπορεί να είναι προσβάσιμη, για παράδειγμα μέσω δοκιμαστικού domain, ξεχασμένου pool ή cronjob. Επιπλέον μπορεί αργότερα να ανατεθεί κατά λάθος σε έναν ιστότοπο. Τις εκδόσεις που δεν χρειάζονται πρέπει να τις αφαιρείτε.

**Πώς βρίσκω όλες τις εγκαταστάσεις PHP σε έναν διακομιστή Linux;**  
Συνδυάστε τρεις οπτικές: εγκατεστημένα πακέτα, εκτελέσιμα αρχεία PHP στο σύστημα αρχείων και διεργασίες που τρέχουν. Μόνο όταν και οι τρεις δίνουν την ίδια εικόνα, ο κατάλογος είναι πλήρης.

**Πρέπει μετά την ενημέρωση να επανεκκινήσω κάθε έκδοση ξεχωριστά;**  
Ναι. Κάθε έκδοση έχει κατά κανόνα δική της υπηρεσία FPM, το LiteSpeed δικές του διεργασίες lsphp, το mod_php ζει μέσα στη διεργασία του Apache. Η επανεκκίνηση της κύριας υπηρεσίας δεν ανανεώνει τις υπόλοιπες.

## Πηγές

- [php.net: ανακοινώσεις ασφαλείας](https://www.php.net/)
- [php.net: υποστηριζόμενες εκδόσεις](https://www.php.net/supported-versions.php)
- [Red Hat Security Bulletin RHSB-2026-013](https://access.redhat.com/security/vulnerabilities/RHSB-2026-013)
