“PHP Warning: move_uploaded_file“ je typická chyba webového servera s Nginx a zobrazí sa, keď chceme nahrať súbor na server. Väčšinou, keď musíme nahrať certifikáty alebo iné súbory, ktoré nepatria “Media”, nevidíme chybu v rozhraní adminRegistrácia CMS.
V konkrétnejšej podobe ide o chybu “PHP Warning: move_uploaded_file” nájdeme to v error.log
ako:
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'
Prečo sa chyba vyskytuje “PHP Warning: move_uploaded_file“ a ako to riešime
Ako som povedal vyššie, chyba sa vyskytuje, keď sa pokúšame nahrať súbory na webový server.
"FastCGI sent in stderr
“Je typické pre servery, ktoré majú PHP-FPM a Nginx ako webový softvér. Problém je teda niekde vo vzťahu skriptu, cez ktorý sa súbory nahrávajú.
"move_uploaded_file(): Unable to move
“Veľmi jasne nám hovorí, že tieto súbory nemožno nahrať a presunúť do iného priečinka na webovom serveri pomocou skriptu, ktorý vykonáva operáciu.
Vyriešte túto chybu PHP rieši sa to veľmi jednoducho nastavením správnych oprávnení na serveri, a to ako pre spúšťací skript, ku ktorému nemal prístup najpravdepodobnejší používateľ: nginx, tak aj pre cieľový priečinok.
Ak súbory webových stránok nepatria používateľovi, ako je to na cPanel, VestaCP alebo iných platformách správy hostingu, potom je takmer určite riešením poskytnúť používateľovi nginx prístup k priečinku na nahrávanie a skriptu.
Pre vyššie uvedený príklad kódu vykonáme nasledujúci príkaz v SSH:
chown -R nginx:nginx /srv/www/domain.test/public/
chmod g+w file.file
Obnovujeme nahrávanie a všetko by malo fungovať bez chýb “move_uploaded_file(): Unable to move“.
Ak máte stále problémy, môžete ich vyriešiť v komentároch k tomuto návodu.