“PHP Warning: move_uploaded_file“ είναι ένα τυπικό σφάλμα διακομιστή ιστού με nginx και εμφανίζεται όταν θέλουμε να ανεβάσουμε ένα αρχείο στον διακομιστή. Τις περισσότερες φορές, όταν πρέπει να ανεβάσουμε πιστοποιητικά ή άλλα αρχεία που δεν ανήκουν “Media”, δεν βλέπουμε το σφάλμα στη διεπαφή του adminΕγγραφή CMS.
Σε πιο συγκεκριμένη μορφή, το λάθος “PHP Warning: move_uploaded_file” το βρίσκουμε σε error.log
όπως και:
FastCGI sent in stderr: "PHP message: PHP Warning: move_uploaded_file(/srv/www/domain.test/public/file.file): failed to open stream: Permission denied in /srv/www/domain.test/public/script.php on line 748 PHP message: PHP Warning: move_uploaded_file(): Unable to move '/tmp/phpqAVtWy'
Γιατί παρουσιάζεται το σφάλμα “PHP Warning: move_uploaded_file“ και πώς το λύνουμε
Όπως είπα παραπάνω, το σφάλμα παρουσιάζεται όταν προσπαθούμε να ανεβάσουμε αρχεία στον διακομιστή web.
"FastCGI sent in stderr
"Είναι τυπικό για διακομιστές που έχουν PHP-FPM και nginx ως λογισμικό web. Άρα το πρόβλημα βρίσκεται κάπου στη σχέση του σεναρίου μέσω του οποίου ανεβαίνουν τα αρχεία.
"move_uploaded_file(): Unable to move
"Μας λέει πολύ ξεκάθαρα ότι αυτά τα αρχεία δεν μπορούν να μεταφορτωθούν και να μετακινηθούν σε άλλο φάκελο στον διακομιστή ιστού από το σενάριο που εκτελεί τη λειτουργία.
Επιλύστε αυτό το σφάλμα PHP λύνεται πολύ απλά, ορίζοντας τα σωστά δικαιώματα στον διακομιστή, τόσο για το σενάριο εκτέλεσης, στο οποίο δεν είχε πρόσβαση ο πιο πιθανός χρήστης: nginx, όσο και για τον φάκελο προορισμού.
Εάν τα αρχεία του ιστότοπου δεν ανήκουν σε έναν χρήστη, όπως συμβαίνει στο cPanel, στο VestaCP ή σε άλλες πλατφόρμες διαχείρισης φιλοξενίας, τότε σχεδόν σίγουρα η λύση είναι να δοθεί στον χρήστη nginx πρόσβαση στο φάκελο μεταφόρτωσης και στο σενάριο.
Για το παραπάνω παράδειγμα κώδικα, θα εκτελέσουμε την ακόλουθη εντολή στο SSH:
chown -R nginx:nginx /srv/www/domain.test/public/
chmod g+w file.file
Συνεχίζουμε τη μεταφόρτωση και όλα θα λειτουργούν χωρίς σφάλματα “move_uploaded_file(): Unable to move“.
Εάν εξακολουθείτε να αντιμετωπίζετε προβλήματα, μπορεί να λυθεί στα σχόλια αυτού του σεμιναρίου.