PHP kodu mkdir ('images', '0777 ') 411 izinlere sahip bir klasör oluşturur!

4 Cevap

Bu dün çalışıyordu yemin edebilirim. Şimdi ise aşağıdaki kod ile hiçbir sorun klasörü yok ama 777 olması gerekirken 411 izinlere sahip yeni bir klasör oluşturur. Benim kod dün bu yapıyordu.

Bunun amacı, bir klasörü zip teslim, görüntüleri silmek, daha sonra görüntüler için yeni bir dizin yaratmak için olduğunu.

Birisi ben ne yapmaları gerektiğini ben yanlış yapıyorum bana ya misin? Teşekkürler

function delete_directory($dirname) {
   if (is_dir($dirname))
      $dir_handle = opendir($dirname);
   if (!$dir_handle)
      return false;
   while($file = readdir($dir_handle)) {
      if ($file != "." && $file != "..") {
         if (!is_dir($dirname."/".$file))
            unlink($dirname."/".$file);
         else
            delete_directory($dirname.'/'.$file);     
      }
   }
   closedir($dir_handle);
   rmdir($dirname);
   return true;
}

$directoryToZip="jigsaw/"; // This will zip all the file(s) in this present working directory

$outputDir="/"; //Replace "/" with the name of the desired output directory.
$zipName="jigsaw.zip";

include_once("createzipfile/CreateZipFile.inc.php");
$createZipFile=new CreateZipFile;

/*
// Code to Zip a single file
$createZipFile->addDirectory($outputDir);
$fileContents=file_get_contents($fileToZip);
$createZipFile->addFile($fileContents, $outputDir.$fileToZip);
*/

//Code toZip a directory and all its files/subdirectories
$createZipFile->zipDirectory($directoryToZip,$outputDir);

/*
$rand=md5(microtime().rand(0,999999));
$zipName=$rand."_".$zipName;
*/
$fd=fopen($zipName, "wb");
$out=fwrite($fd,$createZipFile->getZippedfile());
fclose($fd);
$createZipFile->forceDownload($zipName);

@unlink($zipName);
delete_directory('jigsaw/assets/images/jigsaw_image');

mkdir('jigsaw/assets/images/jigsaw_image','0777');

4 Cevap

Eğer sekizlik kullanıyor olmalıdır, çünkü değişmez 0777, değil sayı-in-a-string "0777", 01411 sekizlik aslında hangi.

Ben biraz aynı sorun vardı, ama bile tırnak çıkardıktan sonra, izni 0777 için ayarlanmış olmayacaktır.

mkdir("infosheets/c/" , 0777);

ancak oluşturulan klasör 0755 için ayarlanmış!

çözüm şu:

$test="infosheets/c/";
mkdir($test);
chmod($test,0777);

ilk klasörü yapmalıdır ve 0777 için izin ayarlanamadı.Ayrıca daha. onlar bana bilinmeyen bir nedenle ayrı ayrı yapılmalıdır! garip!

bool mkdir(string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context]]])

$mode param bir tamsayı değil, bir dizedir. :)

İşte example:

<?php
mkdir("/path/to/my/dir", 0700);
?>

Sen kullanmanız gerekir:

mkdir('jigsaw/assets/images/jigsaw_image', 0777);

http://php.net/manual/en/function.mkdir.php

İkinci argüman, bir int, bir dize olması gerekiyordu. Tırnak dışarı atın.