H ευπάθεια PHP2Shell κινητοποιεί την πλειονότητα του διαδικτύου

H ευπάθεια PHP2Shell κινητοποιεί την πλειονότητα του διαδικτύου

Πώς προστατεύουμε ιστοσελίδες και εφαρμογές σε Linux με Plesk ή μέσω SSH για την ευπάθεια PHP2Shell

Μια επείγουσα ενημέρωση της PHP φέρνει ξανά στο προσκήνιο ένα πρόβλημα που συχνά υποτιμάται: η ασφάλεια μιας ιστοσελίδας εξαρτάται και από το λογισμικό του server που την εκτελεί. Ακόμη και όταν το CMS, τα πρόσθετα ή η ίδια η εφαρμογή είναι ενημερωμένα, μια ευπάθεια στο υποκείμενο περιβάλλον μπορεί να δημιουργήσει σοβαρή έκθεση.

Στις 21 Οκτωβρίου η ομάδα της PHP διέθεσε διορθώσεις για δύο κρίσιμες ευπάθειες, γνωστές συνολικά ως PHP2Shell. Αφορούν τον ίδιο τον μηχανισμό εκτέλεσης της γλώσσας και μπορούν, υπό κατάλληλες συνθήκες, να επιτρέψουν εκτέλεση κώδικα από μη συνδεδεμένο επιτιθέμενο. Η επίσημη βαθμολογία σοβαρότητας είναι 9,2/10 κατά CVSS v4.0. [1][2]

Η AI στην έρευνα και η ανθρώπινη ευθύνη για τις διορθώσεις

Η Calif χρησιμοποίησε το GPT-5.6 Sol στην έρευνα στο πλαίσιο του προγράμματος Patch the Planet. Η Wiz εντόπισε ανεξάρτητα προβλήματα χρησιμοποιώντας επίσης εργαλεία AI. Η διαδικασία περιλάμβανε ερευνητές, δοκιμές, επιβεβαίωση της δυνατότητας εκμετάλλευσης και συντονισμό με τους συντηρητές της PHP. Την ευθύνη των διορθώσεων και της έκδοσης είχε η ομάδα της PHP. [3][4]

Η PHP Foundation αναγνωρίζει ότι πρώτες ενδείξεις ενός από τα προβλήματα είχαν εντοπιστεί το 2024. Η δυσκολία επιλογής μιας λύσης με αποδεκτές επιπτώσεις στη συμβατότητα και οι περιορισμένοι πόροι καθυστέρησαν τη διόρθωση. Η Foundation χαρακτηρίζει την καθυστέρηση οργανωτική αποτυχία και περιγράφει αλλαγές στη διαδικασία λήψης αποφάσεων. [2]

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

Ποιοι πρέπει να κινητοποιηθούν

Οι ευπάθειες καταγράφονται ως CVE-2026-109618 και CVE-2026-109619. Συνδέονται με τον χειρισμό μνήμης και σοβαρών σφαλμάτων. Η επίσημη προειδοποίηση καλύπτει εγκαταστάσεις PHP που εξυπηρετούν web requests, μεταξύ άλλων PHP-FPM, Apache mod_php, CGI, FrankenPHP και LiteSpeed. Η αξιοποίηση εξαρτάται από το περιβάλλον και τη διαδρομή επίθεσης. [1]

Επομένως, WordPress, Joomla, Drupal και εφαρμογές Laravel πρέπει να ελέγξουν την PHP που πραγματικά εκτελούν. Το ότι μια ιστοσελίδα χρησιμοποιεί PHP δεν αποδεικνύει ότι έχει παραβιαστεί. Αντίστοιχα, το δημοφιλές «70% του web» δεν αποτελεί μέτρηση επιτυχημένων επιθέσεων.

Μέχρι στιγμής δεν έχει δημοσιοποιηθεί επιβεβαιωμένη παραβίαση (breach) συγκεκριμένου επώνυμου ιστότοπου ή οργανισμού. Ωστόσο, η κατάσταση στο διαδίκτυο είναι σε πλήρη εξέλιξη:

  • Απόπειρες εκμετάλλευσης «in the wild»: Τηλεμετρίες από παρόχους ασφαλείας και υποδομών (όπως η AWS, η Cloudflare και η Datadog) κατέγραψαν σαρώσεις και ενεργές απόπειρες εκμετάλλευσης του PHP2Shell ήδη λίγο πριν και αμέσως μετά τη διάθεση των patches.
  • Επιβεβαιωμένα Proof-of-Concept (PoC): Ερευνητικές ομάδες (Wiz, Calif, watchTowr, Sansec) επιβεβαίωσαν και επέδειξαν επιτυχή εκτέλεση μη εξουσιοδοτημένου απομακρυσμένου κώδικα (unauthenticated RCE) σε πραγματικές δημοφιλείς εφαρμογές (όπως WordPress, Drupal, Joomla και Magento 2.4.9) κάτω από ευάλωτα περιβάλλοντα εκτέλεσης PHP.
  • Προληπτικά μέτρα: Ορισμένες γνωστές πλατφόρμες, όπως το Phabricator του Wikimedia, τέθηκαν προσωρινά εκτός λειτουργίας για προληπτικούς λόγους λίγο πριν τη διάθεση των διορθώσεων.

Επειδή το PoC και τα εργαλεία εκμετάλλευσης κυκλοφορούν ήδη δημόσια, η μαζική σάρωση ευάλωτων διακομιστών βρίσκεται σε εξέλιξη, καθιστώντας την άμεση αναβάθμιση του PHP runtime και των σχετικών workers επιτακτική ανάγκη.

Ποιες εκδόσεις περιλαμβάνουν τη διόρθωση

Κλάδος PHPΠρώτη επίσημη έκδοση με τις συγκεκριμένες διορθώσεις
8.28.2.35
8.38.3.36
8.48.4.27
8.58.5.12

Μπορούμε να παραμείνουμε στην 8.2, εγκαθιστώντας την 8.2.35 ή νεότερη ενημέρωση του ίδιου κλάδου. Δεν απαιτείται ταυτόχρονη μετάβαση σε 8.3 ή 8.4 για αυτές τις διορθώσεις. Ωστόσο, η επίσημη υποστήριξη ασφαλείας της 8.2 λήγει στις 31 Δεκεμβρίου 2026, οπότε χρειάζεται ξεχωριστό σχέδιο μετάβασης. [1]

Στις διανομές Linux υπάρχουν και backports: ο προμηθευτής μπορεί να ενσωματώσει τη διόρθωση χωρίς να αλλάξει το βασικό upstream version. Σε αυτήν την περίπτωση απαιτείται επιβεβαίωση από το επίσημο advisory της διανομής για το πλήρες όνομα και την έκδοση του πακέτου. Ένας μικρότερος αριθμός έκδοσης δεν αρκεί από μόνος του για να αποδείξει ούτε ασφάλεια ούτε ευπάθεια. [1]

Πριν από την αναβάθμιση: γνωρίζουμε τι αλλάζουμε

Τα παρακάτω αποτελούν πρακτική διαδικασία διαχείρισης. Οι εντολές είναι παραδείγματα και πρέπει να προσαρμοστούν στην εγκατάσταση. Τα example.com, οι διαδρομές, τα ονόματα υπηρεσιών και τα πακέτα δεν είναι καθολικά.

  1. Καταγράφουμε κάθε εγκατάσταση: domains, subdomains, APIs, staging, containers και διαφορετικούς PHP handlers. Ένας server μπορεί να εκτελεί πολλές εκδόσεις ταυτόχρονα.
  2. Κρατάμε επαληθευμένο backup: αρχεία, βάση δεδομένων και ρυθμίσεις PHP/FPM/web server. Snapshot όπου υποστηρίζεται. Η επαναφορά βάσης αργότερα μπορεί να χάσει νέες παραγγελίες ή εγγραφές, άρα χρειάζεται συντονισμός.
  3. Καταγράφουμε το περιβάλλον: έκδοση, extensions, handler, sockets, ρυθμίσεις, cron και queue workers.
  4. Δοκιμάζουμε στο staging όπου είναι εφικτό, χωρίς να παρατείνουμε αδικαιολόγητα την έκθεση παραγωγής. Αν η ενημέρωση καθυστερεί, περιορίζουμε την πρόσβαση στην ευάλωτη υπηρεσία.
  5. Προτιμούμε την ενημέρωση στον ίδιο κλάδο. Η αλλαγή 8.2.34 → 8.2.35 περιορίζει τις μεταβλητές σε σχέση με ταυτόχρονη μετάβαση σε άλλον κλάδο, χωρίς να εξαλείφει την ανάγκη δοκιμών.

Σενάριο Α: Linux server με Plesk

1. Ελέγχουμε την PHP ανά ιστοσελίδα

Ανοίγουμε Websites & Domains → επιλεγμένο domain → PHP Settings. Καταγράφουμε την έκδοση και το πεδίο Run PHP as. Από το View the phpinfo() page ελέγχουμε την ακριβή έκδοση και το configuration του συγκεκριμένου site. Οι ονομασίες μπορεί να διαφέρουν ανά έκδοση και δικαιώματα Plesk. [5]

Η επιλογή «PHP 8.2» περιγράφει τον κλάδο. Δεν αποδεικνύει από μόνη της ότι έχει εγκατασταθεί η 8.2.35.

2. Ενημερώνουμε τα πακέτα στον server

Με δικαιώματα administrator ελέγχουμε Tools & Settings → Updates και System Updates, ανάλογα με τον τρόπο διάθεσης των πακέτων. Εγκαθιστούμε τις διαθέσιμες διορθώσεις και ελέγχουμε ποιες άλλες υπηρεσίες περιλαμβάνονται στην ενημέρωση. Το Plesk διακρίνει πακέτα δικά του, τρίτων και λειτουργικού συστήματος. [6]

Αν λείπει ο επιθυμητός κλάδος, η εγκατάστασή του γίνεται μέσω Add/Remove Components. Αυτό διαφέρει από την ενημέρωση ενός ήδη εγκατεστημένου κλάδου. [7]

Για διαχειριστές με SSH, η επίσημη διαδικασία ενημέρωσης του Plesk περιλαμβάνει:

sudo plesk installer update

Η εντολή μπορεί να ενημερώσει και άλλα εγκατεστημένα components. Δεν είναι αποκλειστικά εντολή αναβάθμισης PHP. Ελέγχουμε το αποτέλεσμα και τις εκδόσεις μετά την ολοκλήρωση. [6]

Αν έχουμε μόνο συνδρομητικό λογαριασμό Plesk, ζητάμε από τον hosting provider να ενημερώσει το runtime και να επιβεβαιώσει την πλήρη έκδοση που εξυπηρετεί το domain. Η αλλαγή στο dropdown δεν εγκαθιστά πακέτα στον server.

3. Επιβεβαιώνουμε και επανεκκινούμε τον σωστό handler

Παραδείγματα για Plesk PHP 8.2:

sudo plesk bin php_handler --list
/opt/plesk/php/8.2/bin/php -v
sudo systemctl status plesk-php82-fpm --no-pager

Αν το domain χρησιμοποιεί αυτήν την κοινή υπηρεσία FPM:

sudo systemctl restart plesk-php82-fpm

Η επανεκκίνηση προκαλεί σύντομη διακοπή σε όσα sites χρησιμοποιούν την υπηρεσία. Dedicated FPM handlers μπορεί να έχουν διαφορετική υπηρεσία· εντοπίζουμε τον πραγματικό handler πριν εκτελέσουμε restart. Το Plesk παρέχει επίσης έλεγχο του dedicated PHP-FPM από τη σελίδα PHP του domain. [5][8][9]

Επιστρέφουμε στο phpinfo του domain και ελέγχουμε τη web PHP. Η /opt/plesk/php/8.2/bin/php -v δείχνει το συγκεκριμένο CLI binary, όχι οριστικά ποιο binary χρησιμοποιεί ο ιστότοπος.

Διαδρομή Β: Linux χωρίς panel, μέσω SSH

1. Αναγνωρίζουμε διανομή, πακέτα και υπηρεσίες
cat /etc/os-release
command -v php
php -v
php --ini
php -m
systemctl list-units --type=service --all 'php*'

Οι τρεις τελευταίοι έλεγχοι PHP αφορούν το CLI. Χρειάζεται επιπλέον έλεγχος του virtual host ή του reverse proxy για να εντοπιστεί το πραγματικό FPM socket και η αντίστοιχη εγκατάσταση. Δεν αλλάζουμε το default CLI θεωρώντας ότι αλλάξαμε αυτομάτως και την PHP του site.

2. Debian / Ubuntu: ενημερώνουμε τα εγκατεστημένα πακέτα

Παράδειγμα μόνο για εγκατάσταση με versioned πακέτα php8.2-*:

sudo apt update
dpkg-query -W -f='${binary:Package}\t${Version}\n' 'php8.2*'
apt-cache policy php8.2-fpm php8.2-cli php8.2-common
apt-mark showhold

Από τη λίστα καταρτίζουμε το σύνολο των εγκατεστημένων πακέτων του runtime, συμπεριλαμβανομένων των extensions. Παράδειγμα για server όπου είναι ήδη εγκατεστημένα ακριβώς τα παρακάτω:

sudo apt-get --simulate install --only-upgrade \
  php8.2-fpm php8.2-cli php8.2-common php8.2-opcache \
  php8.2-mysql php8.2-mbstring php8.2-xml php8.2-curl \
  php8.2-zip php8.2-intl

Ελέγχουμε ότι ο υποψήφιος προμηθευτής παρέχει τη διόρθωση, ότι δεν αφαιρούνται κρίσιμα πακέτα και ότι τα holds δεν μπλοκάρουν την ενημέρωση. Έπειτα εκτελούμε την ίδια εντολή χωρίς --simulate. Προσαρμόζουμε τη λίστα στα πραγματικά εγκατεστημένα πακέτα. Δεν προσθέτουμε τυχαία repository όταν το υπάρχον δεν προσφέρει ακόμη τη διόρθωση. [10]

Αν το site χρησιμοποιεί Apache mod_php, περιλαμβάνουμε το εγκατεστημένο libapache2-mod-php8.2 αντί να θεωρήσουμε ότι αρκεί το FPM. Άλλοι κλάδοι ή πακέτα χωρίς version suffix απαιτούν τα αντίστοιχα ονόματα.

3. AlmaLinux / Rocky Linux / RHEL και συμβατά συστήματα

Αρχικοί έλεγχοι:

rpm -qa 'php*'
sudo dnf repolist
sudo dnf check-update 'php*'

Το dnf check-update μπορεί να επιστρέψει κωδικό 100 όταν υπάρχουν ενημερώσεις· αυτό δεν αποτελεί από μόνο του αποτυχία. Επιβεβαιώνουμε από το advisory του προμηθευτή ποιο build έχει τη διόρθωση και αναβαθμίζουμε τα συγκεκριμένα εγκατεστημένα πακέτα. Η ονοματολογία και τα streams διαφέρουν ανά διανομή και repository. Δεν υπάρχει μία ασφαλής εντολή αλλαγής stream για όλους τους servers.

4. Ελέγχουμε τη ρύθμιση και αντικαθιστούμε τις παλιές διεργασίες

Παράδειγμα Debian/Ubuntu με PHP 8.2-FPM:

sudo php-fpm8.2 -t
sudo systemctl restart php8.2-fpm
sudo systemctl status php8.2-fpm --no-pager

Σε εγκαταστάσεις που χρησιμοποιούν mod_php απαιτείται επανεκκίνηση του Apache ώστε να φορτωθεί η νέα βιβλιοθήκη, μετά από έλεγχο configuration. Τα ονόματα μπορεί να είναι apache2 ή httpd. Δεν επανεκκινούμε υπηρεσίες που δεν σχετίζονται με το runtime.

Τα containers έχουν δική τους PHP. Η ενημέρωση του host δεν αλλάζει το image τους: χρειάζεται διορθωμένο base image, rebuild όπου απαιτείται και επαναδημιουργία των containers μέσω της κανονικής διαδικασίας deployment. Το ίδιο ισχύει για ξεχωριστούς application servers και custom builds.

Ο server ενημερώθηκε, αλλά ο ιστότοπος δεν λειτουργεί

Η πρώτη ενέργεια είναι να συγκεντρώσουμε το πραγματικό σφάλμα. Η τυφλή αλλαγή έκδοσης, δικαιωμάτων ή dependencies μπορεί να προσθέσει νέο πρόβλημα και να δυσκολέψει τη διάγνωση.

Βήμα 1: διαβάζουμε τα logs

Στο Plesk ανοίγουμε Websites & Domains → domain → Logs. Ένα συνηθισμένο αρχείο καταγραφής Apache ανά domain είναι:

/var/www/vhosts/system/example.com/logs/error_log

Για το FPM, ενδεικτικά:

sudo journalctl -u plesk-php82-fpm -n 100 --no-pager
# Ή, σε αντίστοιχο server χωρίς Plesk:
sudo journalctl -u php8.2-fpm -n 100 --no-pager

Χρησιμοποιούμε μόνο το όνομα υπηρεσίας που υπάρχει στην εγκατάστασή μας. Τα 502/503 συχνά απαιτούν έλεγχο FPM, upstream και socket. Το HTTP status μόνο του δεν αποκαλύπτει την αιτία. [8]

Βήμα 2: αντιστοιχίζουμε σύμπτωμα και έλεγχο
ΣύμπτωμαΠρώτος έλεγχοςΣτοχευμένη αντιμετώπιση
502 / 503Κατάσταση FPM, logs, socket του virtual hostΔιόρθωση configuration, σωστό upstream και εκκίνηση του πραγματικού handler
500 / λευκή σελίδαPHP και application error logsΑντιμετώπιση του καταγεγραμμένου fatal error
Call to undefined function / Class not foundExtensions του web runtimeΕνεργοποίηση ή εγκατάσταση της συμβατής επέκτασης
could not find driverPDO driver της βάσηςΈλεγχος pdo_mysql, pdo_pgsql ή άλλου απαιτούμενου driver
ionCube / loader errorΣυμβατότητα loader με PHP και εφαρμογήΕγκατάσταση υποστηριζόμενου loader από τον προμηθευτή
CLI λειτουργεί, web αποτυγχάνειΔιαφορετικό binary, INI, extensions ή χρήστηςΣύγκριση των δύο περιβαλλόντων
Αποτυχία cron / queuesBinary στις προγραμματισμένες εργασίες και process managerΔιόρθωση διαδρομής και επανεκκίνηση των σχετικών workers

Το php -m του SSH δεν αποδεικνύει ότι το ίδιο extension είναι φορτωμένο στο FPM. Ελέγχουμε και το web runtime. Αποφεύγουμε δημόσια μόνιμα αρχεία phpinfo(), επειδή αποκαλύπτουν πληροφορίες του server.

Βήμα 3: ελέγχουμε τη συμβατότητα της εφαρμογής

Σε εφαρμογή με Composer εκτελούμε, ως χρήστης της εφαρμογής και στον κατάλογό της:

composer check-platform-reqs --no-dev

Η εντολή ελέγχει απαιτήσεις PHP και extensions των εγκατεστημένων εξαρτήσεων. Πρέπει ο Composer να εκτελείται με το ίδιο επιλεγμένο PHP binary. Δεν χρησιμοποιούμε --ignore-platform-reqs ως λύση και δεν εκτελούμε γενικό composer update στην παραγωγή για να δούμε αν θα διορθωθεί το πρόβλημα. Το update αλλάζει εξαρτήσεις και lock file. [11]

Στο WordPress, αν τα logs δείχνουν συγκεκριμένο plugin ή theme, το ελέγχουμε στο staging, το ενημερώνουμε ή το απενεργοποιούμε στοχευμένα με διαθέσιμο σχέδιο επαναφοράς. Ελέγχουμε τις βασικές λειτουργίες μετά από κάθε αλλαγή.

Στο Laravel ελέγχουμε τα logs της εφαρμογής, τις ενεργές ρυθμίσεις, τα δικαιώματα των αναγκαίων καταλόγων και τις υπηρεσίες μεγάλης διάρκειας. Το php artisan optimize:clear χρησιμοποιείται όταν υπάρχει τεκμηριωμένη ανάγκη καθαρισμού caches και είναι αποδεκτή η επίπτωσή του στην εφαρμογή· δεν είναι γενικό «φάρμακο». Queue workers, Octane ή Reverb χρειάζονται την κατάλληλη επανεκκίνηση μέσω του process manager. Διατηρούμε το APP_DEBUG=false στην παραγωγή. [12]

Βήμα 4: επαναφέρουμε λειτουργία χωρίς ευάλωτη PHP

Αν η βλάβη προέκυψε κατά μετάβαση 8.2 → 8.4, μπορούμε να επιστρέψουμε σε διορθωμένη 8.2.35 ή νεότερη 8.2, εφόσον η εφαρμογή την υποστηρίζει. Αν το πρόβλημα εμφανίστηκε σε ενημέρωση 8.2.34 → 8.2.35, πρώτα ελέγχουμε extensions, INI, handlers και τα logs, αντί να εκθέσουμε ξανά την 8.2.34.

Η ασφαλής επαναφορά μπορεί να αφορά τον προηγούμενο κώδικα ή τις προηγούμενες συμβατές ρυθμίσεις, διατηρώντας το διορθωμένο runtime. Αν χρειαστεί επαναφορά ολόκληρου snapshot που περιέχει ευάλωτη PHP, κρατάμε το σύστημα απομονωμένο μέχρι να διορθωθεί. Εν τω μεταξύ μπορούμε να εμφανίσουμε στατική σελίδα συντήρησης, χωρίς προώθηση αιτημάτων στην ευάλωτη εφαρμογή.

Δεν αποδίδουμε chmod 777 σε καταλόγους και δεν απενεργοποιούμε συλλήβδην SELinux, AppArmor ή WAF για να εξαφανιστεί ένα σφάλμα.

Τι δεν αντικαθιστά το patch

CDN, WAF, περιορισμοί uploads και αλλαγές σε επιμέρους ρυθμίσεις μπορεί να μειώσουν συγκεκριμένες διαδρομές επίθεσης. Η επίσημη PHP ξεκαθαρίζει ότι δεν αποτελούν πλήρη λύση. Αν η διόρθωση δεν μπορεί να εγκατασταθεί άμεσα, περιορίζουμε την πρόσβαση ή αποσύρουμε προσωρινά την ευάλωτη υπηρεσία από τη δημόσια έκθεση. Δεν εφαρμόζουμε αποσπασματικές ρυθμίσεις μνήμης χωρίς αξιολόγηση των επιπτώσεων στον server. [1]

Πότε θεωρούμε την εργασία ολοκληρωμένη

Η επιτυχία δεν είναι απλώς ένα μήνυμα «update successful». Χρειάζεται να επιβεβαιωθεί ότι:

  • Κάθε domain και backend εκτελεί διορθωμένο runtime ή τεκμηριωμένο vendor backport.
  • Οι παλιές διεργασίες έχουν αντικατασταθεί, μαζί με τους σχετικούς workers και containers.
  • Λειτουργούν σύνδεση χρηστών, φόρμες, uploads, APIs, συναλλαγές και εργασίες παρασκηνίου.
  • Δεν εμφανίζονται νέα σφάλματα ή επαναλαμβανόμενες πτώσεις στα logs.
  • Υπάρχει καταγραφή του τι ενημερώθηκε, πότε και από ποιον.

Αν υπάρχουν ενδείξεις προηγούμενης παραβίασης, η αναβάθμιση δεν αρκεί ως διαδικασία αποκατάστασης. Απομονώνουμε το σύστημα, διατηρούμε logs και διαθέσιμα στοιχεία και προχωρούμε σε διερεύνηση και ελεγχόμενη αποκατάσταση. Η περιστροφή εκτεθειμένων μυστικών γίνεται από έμπιστο περιβάλλον, αφού περιοριστεί η πρόσβαση του επιτιθέμενου.

Η υπόθεση PHP2Shell δείχνει πόσο σημαντική είναι η δυνατότητα άμεσης ανταπόκρισης: απογραφή συστημάτων, σαφής υπεύθυνος, λειτουργικά backups και μια δοκιμασμένη διαδικασία ενημέρωσης αποτελούν μέρος της καθημερινής λειτουργίας κάθε ψηφιακής υπηρεσίας.


Πηγές και τεχνική τεκμηρίωση

  1. PHP — επίσημη ανακοίνωση, διορθωμένες εκδόσεις και οδηγίες
  2. PHP Foundation — ιστορικό εντοπισμού και διόρθωσης
  3. OpenAI — συντονισμένη γνωστοποίηση
  4. Wiz — τεχνική ανάλυση PHP2Shell
  5. Plesk — PHP Settings
  6. Plesk — Updates
  7. Plesk — Installing PHP
  8. Plesk — PHP-FPM και σφάλμα 503
  9. Plesk — PHP handlers
  10. Ubuntu Server — διαχείριση πακέτων
  11. Composer — check-platform-reqs και εντολές
  12. Laravel — Deployment

Σημείωση σύνταξης: Τα δημοσιεύματα που δόθηκαν χρησιμοποιήθηκαν ως αφετηρία έρευνας. Οι τεχνικές οδηγίες στηρίζονται στις παραπάνω πρωτογενείς πηγές και σε διαδικασία διάγνωσης ανά εγκατάσταση.