Autor Zpráva
jezedak
Profil *
Zdravím. Mám problém s nastavením chmod pro uploadované obrázky.
Můj zdrojový kód vypadal takto:

if (is_uploaded_file($_FILES["imgf"]["tmp_name"])):
$nazev=$_FILES["imgf"]["name"];
$typ = $_FILES["imgf"]["type"];
@rename($_FILES['imgf']['tmp_name'],'./images/'.$_SESSION[idinz].'/'.$nazev.'');

...soubor se mi sice nahrál na server, ale chmod se nastaví na 0600. a tento soubor nejde zkopírovat ani vymazat...

proto jsem se pokoušel za poslední řádek přidat toto:

chmod("/img_inz/'.$SESSION[idinz].'/'.$nazev.'", 0777);

...bohužel výsledek je takový, že se mi už soubor neuloží vůbec..:-(
SwimX
Profil
jezedak
zkus před to dát umask(0000) - http://cz.php.net/umask
Medvídek
Profil
ve funkci chmod nelze použít práva 777 :) Zkus ftp_chmod :)
jezedak
Profil *
A ouha... Víš já nejsem moc zdatný programátor a spíše se teprve učím. Abych se přiznal tak nevím jak bych to napsal:-( Nemohl bys mi to prosím nějak sesmolit? Taky jsem si říkal jestli nemůže být problém už se složkou, kterou pojmenovávám podle ID. Tu vytvářím takto:
mkdir('./img_inz/'.$_SESSION[idinz].'');
Teprve poté volám kód, který jsem napsal výše. díky
Medvídek
Profil
jezedak
Já to dříve také nevěděl, ale řešil sem podobný problém :)

<?php
// FTP chmod přes FTP připojení

$ftpUserName = 'username';
$ftpUserPass = 'userpass';
$ftpServer = 'ftp.example.com';

  $ftpConn = ftp_connect($ftpServer);
 
  if (!$ftpConn) {
    die("Nelze se připojit k $ftpServer");
  }

if (ftp_login($conn_id, $ftpUserName, $ftpUserPass)) {
   echo "Připojen jako: $ftpUserName @ $ftpServer";
}
else {
   echo "Nelze se připojit jako:  $ftpUserName";
   ftp_close($ftpConn);
   die("Closed connection to $ftpServer");
}

//Změna CHMOD na 777

echo ftp_chmod($ftpConn, 077, $ftpFilename) ? "CHMOD v pořádku vytvořen!" : 'Chyba';


// Zavření spojení
ftp_close($conn_id);
?>
jezedak
Profil *
Já jsem tam teď zkusil dát:

$file='./img_inz/'.$_SESSION[idinz].'';
ftp_chmod($nazev, 0777, $file);
a soubor se mi už uloží ale furt má nastaveno 600
Medvídek
Profil
a připojil si se k ftp atd ? Nebo si tam dal pouze to ftp_chmod($nazev, 0777, $file);
jezedak
Profil *
jen tohleto... ale kdybych nebyl pripojeny tak by se mi to neulozilo ne?
Medvídek
Profil
Musíš zkopírovat kompletní skript, co jsem psal výše. :)
bohyn
Profil
- uploadovane soubory se presouvaji pres move_uploaded_file()
- Pro cteni a zapis staci nastavit prava na 0666.
SwimX
Profil
bohyn
Pro cteni a zapis staci nastavit prava na 0666.
pro čtení a zípis možná, ale jezedak říká: „soubor se mi sice nahrál na server, ale chmod se nastaví na 0600. a tento soubor nejde zkopírovat ani vymazat..
bohyn
Profil
SwimX
Pricinu bych hledal, jak uz sem psal vyse, v techto bodech:
1) na nekterych servrech pry nejde nastavit 0777 (?), takze kdyz zkusi 0666 tak se to treba povede.
2) na presouvani uploadovanych souboru pouziva celkem netradicni nastoje. Soubor v tempu muze mit jineho vlastnika nez jaky je vlastnik procesu PHP (proto se souborem 0600 nejde nic delat).

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0