NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Problém s uploadem obrázku do libovolné složky

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
roverjedla
Člen
Avatar
roverjedla:25.7.2016 22:52

Ahoj,

mám dotaz ohledně uploadu obrázků.
Přikládám kód, který mám pro upload obrázku do určené složky. Vše má fungovat velmi jednoduše - pomocí input type=file vyberu obrázek z počítače a po odkliknutí submitu se obrázek má uploadovat z počítače do určené složky. Vše funguje, ale je možno vkládat pouze do složky "images". Jakmile změním název složky, do které chci obrázky, hází mi to chybu, že byl přístup zamítnut apod.
Celá chyba zde: Warning: move_uploaded_fi­le(image/Unknow­n.jpg): failed to open stream: Permission denied in /Applications/XAM­PP/xamppfiles/htdoc­s/upload_img/a­.php on line 9
Zdroják zde:

<?php
if (isset($_POST['upload_img'])) {
    $file_name = $_FILES['image']['name'];
    $file_type = $_FILES['image']['type'];
    $file_size = $_FILES['image']['size'];
    $file_tmp_name = $_FILES['image']['tmp_name'];

    if ($file_name) { //if file exists
        move_uploaded_file($file_tmp_name, "images/$file_name");
    }


}
?>
<form method="post" enctype="multipart/form-data" action="">
    upload image <input type="file" name="image"><br>
    <input type="submit" value="submit" name="upload_img">
</form>

Budu moc rád za rady ohledně tohoto problému. S přesouváním obrázků pracuji prvně a jak je možné si všimnout, kód je velmi jednoduchý a je v nejprostěší vezri - čistě na vyzkoušení.

Díky za rady....

 
Odpovědět
25.7.2016 22:52
Avatar
Odpovídá na roverjedla
Dominik Gavrecký:25.7.2016 23:54

Skús nastaviť chmod vyzerá to tak že ti to odmietne zápis do zložky.

Editováno 25.7.2016 23:55
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
25.7.2016 23:54
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
mara
Člen
Avatar
Odpovídá na roverjedla
mara:26.7.2016 0:02

Ano, zkus to, co říká Dominik. Zkus první na tu složku, kde to chceš uložit zavolat v příkazovém řádku

chmod 777 nazev_složky
Nahoru Odpovědět
26.7.2016 0:02
Co na srdci, to na Facebooku
Avatar
mkub
Tvůrce
Avatar
Odpovídá na roverjedla
mkub:26.7.2016 1:05

nepocuvaj, co ti radia ohladne chmod, ak das chmod 777, tak ten adresar spristupnis pre vsetkych, co je bezpecnostne riziko, skor pomocou prikazu chown zmen vlastnika na uzivatela, pod ktorym bezi web server

pokial pouzivas distro zalozene na Debiane (ako napr. Ubuntu a dalsie), tak:
]code]chown -R www-data:www-data adresar[/code]
ale zmenu vlastnika musis urobit ako root

 
Nahoru Odpovědět
26.7.2016 1:05
Avatar
roverjedla
Člen
Avatar
roverjedla:26.7.2016 1:06

Mně to tedy vůbec nefunguje.. Podle toho, co jsem zatím vygooglil, tak bych s tím naprosto souhlasil, ale je možné, že když si dám toto:

<?php
echo 'Current script owner: ' . get_current_user();
echo "<br>";
echo exec('whoami');
?>

a vyhodí mi to přesně tyto hodnoty:
Current script owner: jedla
daemon

může být kvůli tomu nějaký problém se zapisováním?

Dále také momentálně pracuji na macu, to tomu nijak nevadí?

A poslední otázka, jak ten chmod nejlépe zakomponovat do kódu?
Udělal jsem to takto:

<?php
if (isset($_POST['upload_img'])) {
    $file_name = $_FILES['image']['name'];
    $file_type = $_FILES['image']['type'];
    $file_size = $_FILES['image']['size'];
    $file_tmp_name = $_FILES['image']['tmp_name'];

    chmod('files/' . $file_name, 0777);

    if ($file_name) {
        move_uploaded_file($file_tmp_name, "files/$file_name");
    }


}
?>
<form method="post" enctype="multipart/form-data" action="">
    upload image <input type="file" name="image"><br>
    <input type="submit" value="submit" name="upload_img">
</form>

ale po odeslání formu opět stejné dvě chyby jako předtím + se na začátek přidala ještě jedna:
Warning: chmod(): No such file or directory in /Applications/XAM­PP/xamppfiles/htdoc­s/upload_img/c­.php on line 7

 
Nahoru Odpovědět
26.7.2016 1:06
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.