“PHP Warning: move_uploaded_file“ je typická chyba webových serverov 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”, chybu v administračnom rozhraní CMS nevidíme.
V konkrétnejšej podobe ide o chybu “PHP Warning: move_uploaded_file” nájdeme to v error.log vo forme:
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 objaví, keď sa pokúšame nahrať nejaké súbory na webový server.
“FastCGI sent in stderr” je typické pre servery, ktoré majú PHP-FPM a Nginx ako softvér pre web. 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ý operáciu vykonáva.
- Oprava chyby NGINX: nebolo možné prideliť novú reláciu v zdieľanej vyrovnávacej pamäti relácie SSL „le_nginx_SSL“ počas nadviazania spojenia SSL
- Opravte klienta [chyba HTTP], ktorého cieľom bolo odoslať príliš veľké telo [Nahrávanie médií WordPress]
Riešenie tejto chyby 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
Reštartujem nahrávanie a všetko by malo pokračovať bez chyby “move_uploaded_file(): Unable to move“.
Ak stále narazíte na problémy, môžete ich vyriešiť v komentároch k tomuto návodu.
Bonjour,
Prečítal som si a znova si prečítal vaše články na tému [presun_upload_file].
Ukazuje sa, že čelím tomuto problému a snažím sa z neho dostať už mnoho mesiacov bez úspechu.
Mám osobnú stránku, na ktorej mám stránku Form.html, ktorá funguje len čiastočne, konkrétne: nemožno otvoriť feed atď...a samozrejme presunúť ho do 'nahrávania'.
Do dôchodku som odišiel z grafiky, v 13 rokoch typograf, potom ofsetový redaktor, počítačový grafik, webmaster, skrátka mám 84 rokov na dôchodku a stále ma práca baví.
Ak si vystačím s HTML a JavaScriptom, dnes bojujem s PHP.
S mojimi kolegami alžírskymi veteránmi chodím na malé výlety a realizujem “správy” ktoré dám na svoju Osobnú stránku dostupnú pre tých, ktorí majú záujem; preto by som rád dostával dokumenty, pretože nemôžem urobiť všetko sám, aby som ilustroval svoje body, preto myšlienka formulára a spracovania PHP.
Svoju stránku som vytvoril pomocou „Dreamweaver CC2020“, verzia pre Mac hosťovaná doma na serveri Synology „Ngnix“ DMS v. 7.1 – PHP 8 (možnosť php 7.2, php 7.3, php 7.4). Predvolený certifikát (No-Ip): TrustCor DV CA – G2 RSA
Formulár funguje správne pre „textové“ polia, ale odmieta polia médií.
Ak chcete, môžete sa pripojiť na vyššie uvedenú URL, kliknúť na figúrku a keďže som neaktivoval „return“ html, výsledok si budete môcť pozrieť na stránke PHP. (Pridelil som 10 Mb a 20 Mb) pre médiá.
A ak mám pravdu, problém by pochádzal z „FastCGI“ serverov Nginx PHP-TPM, čo je môj prípad, takže v paneli TPM je veľa políčok na začiarknutie alebo zrušenie začiarknutia, ale ktoré z nich?
Všimol som si príkaz SSH:
chown -R nginx:nginx /srv/www/domain.test/public/
chmod g+w súbor.súbor
Bude to však vyhovovať môjmu serveru?
Vopred dakujem za cenne rady.