Папка со случайным именем и сохранение файла в нем с помощью PHP - PullRequest
1 голос
/ 11 октября 2011

Итак, я пытаюсь создать PHP-скрипт, в котором клиент может создать папку с 10-значным именем из случайных букв и цифр, а затем сохранить документ, над которым он сейчас работает, в эту папку.Это как JSfiddle, где вы можете сохранить то, над чем вы сейчас работаете, и он создает случайную папку.Моя проблема в том, что он не создаст мой каталог, и идея верна, и она должна работать.Однако PHP не сохраняет журнал ошибок, поэтому я не могу определить проблему.Вот что я получил до сих пор.

PHP

save_functions.php

<?php
function genRandomString() {
    $length = 10;
    $characters = "0123456789abcdefghijklmnopqrstuvwxyz";
    $string = '';    
    for ($p = 0; $p < $length; $p++) {
        $string .= $characters[mt_rand(0, strlen($characters))];
    }
    return $string;

}
<?php
function createFolder() {
    $folderName = genRandomString(); //Make a random name for the folder
    $goTo = '../$folderName';//Path to folder
    while(is_dir($goTo)==true){ //Check if a folder with that name exists
        $folderName = genRandomString();
        $goTo = '../$folderName';
    }
    mkdir($goTo,7777); //Make a directory with that name at $goTo
    return $goTo; //Return the path to the folder
}
?>   

create_files.php

<?php
include('save_functions.php');//Include those functions
    $doc = $_POST['doc'];//Get contents of the file
    $folder = createFolder();//Make the folder with that random name
    $docName = '$folder/style.css';//Create the css file
    $dh = fopen($docName, 'w+') or die("can't open file");//Open or create the file
    fwrite($dh, $doc);//Overwrite contents of the file
   fclose($dh);//Close handler
?>

1 Ответ

2 голосов
/ 11 октября 2011

В вызове mkdir($goTo,7777) используется неправильный режим, обычно это восьмеричное , а не десятичное или шестнадцатеричное 7777 имеет восьмеричное значение 017141 и, таким образом, пытается установить несуществующие биты. Попробуйте обычный 0777.

Но почему бы вам просто не использовать tempnam() или tmpfile() в вашем случае?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...