HOME

ADD

EDIT

PHP

Soubory a upload

Práva u adresářů a souborů

Problémje, že mkdir 0777 ve skutečnosti nedělá v PHP mkdir 0777. Bere totiž do úvahy i systémovou masku, která je typicky nastavená pro *nixové uživatele na 0022, takže udělá pouhé 0755. A v php.ini ani v httpd.conf se to bohužel nedá změnit. Pokud tuto triviální informaci víte, vše je jasné, já jsem ji do dnešního dne nevěděl. Je tedy nutné před mkdir() použít ještě umask(0000), tedy vynulovat masku, a vše bude fungovat dle očekávání.

Druhou možností je samozřejmě nastavit defaultní umask v *nixovém systému na 0000. Poté i PHP bude fungovat tak, jak očekáváte, a nebude problém v syncu práv mezi PHP a FTP. Je to nakonec nejlepší řešení, protože spousta skriptů umask nepoužívá, a dopisovat to do skriptů je poněkud méně pohodlné. Navíc umask funguje jen pro nejbližší další příkaz, poté se opět resetuje do původního stavu, takže se nedá vložit jen do nějakého config.php.

Nahrátí souboru na server pomocí APP/admin/class.img.php

<form method="post" enctype="multipart/form-data" name="formular" id="formular">
  <input type="file" name="soubor[]" value="Nahrát" />
</form>
zpracování
$fileAllow=array("doc","xls","pdf","odt","docx","xlsx");

saveFiles($fileArray,"data/upload","moje-id",356000,$fileAllow)

Download modul

např.v administraci na Synapse (je tu jen ukázka)

$directoryToUpload="../files";
$directoryToView="../data/cv";
$table="synapse_studenti";

if ($_REQUEST["action"]=="delete") {
      $sqlPom="SELECT directory,file FROM $table WHERE id='".$_REQUEST["idr"]."' ";
      $dotazPom=mysql_query($sqlPom);
      $filePom=mysql_result($dotazPom,0,"file");
      
      $sqlDel="DELETE FROM $table WHERE id='".$_REQUEST["idr"]."' ";
      $dotazDel=mysql_query($sqlDel);
      $file=$directoryToUpload."/".$filePom;
       if (@file_exists($file))   {
            $delete = @chmod ($file, 0775);
            $delete = @unlink($file);
            if ($delete) {
               $message.="došlo k úspěšnému výmazu souboru ze serveru (<strong>$file</strong>) ";
            }
            //$delete = @system("del $filesys");
         }
}

if (isset($_FILES["fieldsFile"])) {
   $message = "";
   $filePom = $_FILES["fieldsFile"];
   if ($filePom["error"] != 0) {
      $message = "Nastala chyba při uploadu souboru, zkontrolujte zda je soubor správný a cesta k němu existuje";
   } else {
      $uploadfile = $directoryToUpload."/".$filePom["name"];
      $fileSize=$filePom["size"];
      $message.="Dochází k nahrátí souboru :  <strong>".$uploadfile."</strong> ($fileSize b). ";
      
      if (!move_uploaded_file($filePom['tmp_name'], $uploadfile)) {
            $message.="došlo k chybě při nahrátí souboru na serveru";
      }
      else {
            $message.="soubor byl úspěšně nahrán na server";
            if (file_exists($uploadfile)) {
                     $fileStat=stat($uploadfile);
                     $sizeOfFile=$fileStat["size"];
                     $mtime=date("d.m.Y",$fileStat["mtime"]);
                     $typeOfFile=typeOfFile($uploadfile);
           }
      }
   }
   
   if ($_REQUEST["fieldID"]>0) $fieldID=$_REQUEST["fieldID"];
         else $fieldID="";
      if (!$fieldID OR $fieldID==0 OR strlen($fieldID<1)) {
                  $sqlPom="SELECT MAX(id) FROM $table  ";
                  $dotazPom=mysql_query($sqlPom);
                  $idMax=mysql_result($dotazPom,0,0)+1;
      } else  $idMax=$fieldID;

      $fieldActive=$_REQUEST["fieldActive"];
      $fieldTitle1=$_REQUEST["fieldTitle1"];
      $fieldTitle2=$_REQUEST["fieldTitle2"];
      $fieldTitle3=$_REQUEST["fieldTitle3"];
      $fieldOrder=$_REQUEST["fieldOrder"];
      //$fileName=$directoryToView."/".$filePom["name"];
      $sqlInsert="REPLACE INTO $table VALUES (
                  '$idMax','$directoryToView', '".$filePom["name"]."','$fieldTitle1','$fieldTitle2'
                  ,'$fieldTitle3', '$fieldActive', '$fieldOrder','$sizeOfFile','$mtime'
                  ,'$typeOfFile','','','',''
            ) ";
      //echo $sqlInsert;
      if ($queryInsert=mysql_query($sqlInsert)) {
                  $message.="<strong>$fieldTitle1</strong> byl úspěšně vložen do databáze.";
            }
      else { $message.="nastala chyba při vkládání záznamu <strong>$fieldTitle1</strong> do databáze.";  $message.=mysql_error(); }
            
   
 //echo phpinfo();
}

Nejnavštěvovanější

LuštěninySladkéVýpisy z DB WP title atd...Kuřecí a drůbežAndorid 2.2 účet ArchosGulášDisková poleOracleMonitOCS InventoryFotbalTinyCore LinuxWebkameryQuantaPrenatální kurzDatabázové funkceActive DirectoryPřílohyVěci na cestováníSynchronizaceAkceWIFIeGroupWareOpravyUTB ClonezillaSynology 411+Vepřové masoPanteřiDoxygenAntispamGrubCodeigniterElasticsearchSynology 413jBezpečnostGrilování - grillFTP funkceUTBlXjsHjzLTFplUbOHVlastní příkazy LinuxuArchivace a synchronizacePythonProxmoxLéčba - vlastní receptyUTB VirtualizaceWP MultidoményOmáčkySamsung OmniaPodstránka 4SalátySociální sítěWindows XPPDFPravdy a nepravdyPomazánkymySQL spojování IISystémové funkceModulyAdresářové a souborovéČas a časové zónyFacebookPříspěvky a stránkyZvěřinaKulturní středySoubory a uploadArchivace a komprimaceDálkové ovládáníUživatel a právaArchivace a zálohováníAplikacePrůjemPodstránka 2WordpressWindows 7JavaScriptBindSítězz AplikaceApacheCMS systémyMonitoringWifi routeryPolévkypláčSilvestr 2008WindowsDálniceMailApache a certifikátyPXEPHP a MYSQLSynchronizace datUpgradeVkládání do PHP stránekSportMailserverTěstoviny a omáčkyObrácený režimAplikace na cestováníRýžovéExporty XLS Word CVSKlonování dískůNFSWordpress Captcha pluginsWordpress jazykové mutaceKódováníCesnetUpgradeWordpress WPDBKočárkyPodstránka 1Léčebné medicínyPizzaPlatební systémyManuályBalíčkovací systémyLiwQSROBcUteiFjIbjmenaVypalováníSEOPoleMonitoryVideoSoftwareVirtualizace a CloudingSubversionVirtualMasterPečeníMySQL a BashDokumentaceTwitterThunderbirdZměnit statusUživatelská poleSSHDetoxAjaxFrameworkyMail - výběr poštyLocale - lokalizace linuxuCyklistikaPXE ServerChuťovkyKancelářské aplikaceShellPráce s menu a seznamem stránekRychlovkyNekulturní pátekJSONNagiosSylabusHardwareDoporučená jídlaCSSServery a bezpečnostTempX11VIMOpenwiki.orgDatabázeKVMwordpress Codestyling LocalizationzzWTwBtKLkrCTHoHovězíKafé, ledová káva, frapéInstalace na Dell Inspiron DUOMongoDBPodstránka 1aBezmaséBuchtyExport XMLGnomePříspěvky v dané kategoriiSdílení mobilního InternetuSmaženéCSS a Grafické Å¡ablonyDellPřevodyBylinkyZeleninová jídlaVltavaPHPEZCCaptchaPříkladyVirtual HostingArchivace a verze souborůMySQL export importDoctor Who Toursnetbook Lenovo S205wgetSynchronizace s Windows MobileInstalacePřípadová studie 1 - ladění serveruPostgreSQLVKzvCYgntSqCbMeKaVirtualizace aplikacíWYSIWYG editory tinyMCEZendZnaková kódováníDistribuceLVMVzdálená plochaPropecia Espana Disfuncion Erectil ShanetqYbeiVzqUQXWSwbLinuxové aplikace pro internetProblémy s hardwaremPayPalLékárničkaRybyOptimalizace www stránekXHTMLKohanaTémataAndroidNápojeupgrade na PHP 5.5 - nefunkční mysqlVyhledávání souborů a v souborechApache a UTBsweelryaerofs jlrftŠkytavkaDiakritikaKojeníNavigaceWebServer : Performance Benchmarks a WebserverRozvrhyGoogle AnalyticsSdílení tiskárnyPříslušenstvíNHLFirewallAlkohol a drinkyPHP frameworksDisky a práce s nimiŘetězcevrugBUqlmLGALrKonverzní funkceKYPopmWQoMOJwcmIOoKSamsung S5620 MonteZItxHryPkLHorkovzdušná fritéza