“PHP Warning: move_uploaded_file“ este o eroare tipica serverelor web cu NGINX si apare atunci cand dorim sa facem upload unui fisier pe server. De cele mai multe ori, atunci cand trebuie sa facem upload unor certificate sau altor fisiere care nu tin de “Media”, eroarea nu o vedem in interfata de administrare a CMS-ului.
Intr-o forma mai concreta, eroarea “PHP Warning: move_uploaded_file” o gasim in error.log
sub forma:
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'
De ce apare eroarea “PHP Warning: move_uploaded_file“ si cum o rezolvam
Asa cum am spus si mai sus, eroarea apare atunci cand incercam sa facem upload unor fisiere pe serverul web.
“FastCGI sent in stderr
” este tipic pentru serverele care au PHP-FPM si NGINX ca software pentru web. Deci problema este undeva la relatia scriptului prin care se face upload cu fisierele.
“move_uploaded_file(): Unable to move
” ne spune foarte clar ca acele fisiere nu pot fi uploadate si mutate in alt folder de pe serverul web de catre scriptul care executa operatiunea.
- Fix NGINX Error: could not allocate new session in SSL session shared cache “le_nginx_SSL” while SSL handshaking
- Fix [HTTP Error] client intended to send too large body [Media Upload WordPress]
Rezolvarea acestei erori PHP se rezolva foarte simplu, setand pe server permisiunile corecte, atat pentru scriptul de executie, la care cel mai probabil user: nginx nu avea acces, cat si pentru folderul de destinatie.
Daca fisierele website-ului nu apartin de un user, asa cum este pe cPanel, VestaCP sau alte platforme de hosting management, atunci aproape sigur rezolvarea este sa dam acces user-ului nginx la folderul de upload si la script.
Pentru exemplul de cod de mai sus, vom executa in SSH urmatoarea comanda:
chown -R nginx:nginx /srv/www/domain.test/public/
chmod g+w file.file
Reluam upload si totul ar trebui sa decurga fara eroarea “move_uploaded_file(): Unable to move“.
Daca intampinati in continuare probleme, se poate rezolva in comentariile de la acest tutorial.
Bonjour,
J’ai lu et relu vos articles sur le sujet [move_upload_file].
Il se trouve que je suis confronté avec ce problème et que je cherche depuis moult mois de m’en sortir sans succès.
J’ai un site perso dans lequel j’ai une page Formulaire.html qui ne fonctionne que partiellement, à savoir : impossible d’ouvrir le flux etc…et bien sûr de le déplacer dans ‘uploads’.
Je suis retraité des Arts graphiques, typographe à 13 ans, puis monteur offset, infographiste, webmaster, bref j’ai 84 ans retraité et je suis toujours et encore passionné par mon métier.
Si je me débrouille avec le html et le JavaScript, je me heurte aujourd’hui au PHP.
Je fais avec mes collègues anciens combattant d’Algérie, de petites sorties et réalise des “reportages” que je mets sur mon site Perso à dispo pour ceux qui sont intéressés ; donc, je désire recevoir des docs car je ne pas tout faire moi même pour illustrer mes propos, d’où l’idée du Formulaire et traitement PHP.
J’ai créé mon site avec “Dreamweaver CC2020”, version Mac hébergé chez moi sur un serveur Synology “Ngnix” DMS v. 7.1 – PHP 8 (possibilité php 7.2, php 7.3, php 7.4). Certificat par défaut (No-Ip) : TrustCor DV CA – G2 RSA
Le Formulaire fonctionne correctement pour les champs “textes”, mais refuse les champs médias.
Si vous le voulez, vous pouvez vous connecter à l’URL ci-dessus, clic sur la figurine et comme je n’ai pas activer la html “retour”, vous pourrez visualiser le résultat dans la page PHP. (j’ai alloué 10 Mb et 20 Mb) pour les médias.
Et si je vous suis bien, le soucis viendrait du “FastCGI” des serveurs Nginx PHP-TPM ce qui est mon cas, alors dans le volet TPM, il existe bien moult cases à cocher ou décocher, mais les quelles ?
J’ai bien remarqué la commande SSH :
chown -R nginx:nginx /srv/www/domain.test/public/
chmod g+w file.file
Mais conviendra-t-telle à mon serveur ?
Merci par avance de vos précieux conseils