php как создать файл в определенном каталоге

#php

#php

Вопрос:

Как мне создать файл в определенном каталоге?

это мой код на данный момент :

 $username = $_POST["username"];

$filedir = "./u/".$username;

mkdir($filedir);

$folder = $filedir;
chmod($filedir, 0777);

$createfile = fopen( $_SERVER['DOCUMENT_ROOT'] . '/path/filename.php' );  


Я также пробовал fopen, но это не сработало: (

Я ПОНЯЛ!!! Это было

 $createfile = fopen('./u/'.$username.'/'.$username.'.php', 'x');  

Спасибо за всю помощь, парень 🙂 действительно оценил.

Комментарии:

1. Как это не работает? Вы получаете какую-либо ошибку? Вам нужно быть немного более конкретным, если вам нужна помощь.

2. Вы пробовали полный путь? например, «/var/www/your_domain_path/u/».$username;

3. @CharlotteDunois Я даже не уверен, может перезапустить мой сервер, а затем посмотреть, исправил ли он что-нибудь

4. Может быть, попробуйте $createfile = fopen( $_SERVER['DOCUMENT_ROOT'] . '/u/'.$username.'/filename.php' ); вместо этого

5. @CharlotteDunois когда я пытаюсь это сделать, я получаю сообщение об ошибке » fopen() ожидает не менее 2 параметров, 1 задан»

Ответ №1:

Ответ был таким :

 $createfile = fopen('./u/'.$username.'/'.$username.'.php', 'x');  

Спасибо за всю помощь, парень 🙂 действительно оценил.

Ответ №2:

требуется режим. Указывает тип доступа, который требуется для файла / потока.

 fopen(filename,mode)


$createfile = fopen($_SERVER['DOCUMENT_ROOT'] . '/path/filename.php',"r"); // read only
  

Возможные значения:

  • «r» (только для чтения. Начинается с начала файла)
  • «r » (чтение / запись. Начинается с начала файла)
  • «w» (только для записи. Открывает и очищает содержимое файла; или создает новый файл, если он не существует)
  • «w » (чтение / запись. Открывает и очищает содержимое файла; или создает новый файл, если он не существует)
  • «a» (только для записи. Открывает и записывает в конец файла или создает новый файл, если он не существует)
  • «a » (чтение / запись. Сохраняет содержимое файла путем записи в конец файла)
  • «x» (только для записи. Создает новый файл. Возвращает FALSE и ошибку, если файл уже существует)
  • «x » (чтение / запись. Создает новый файл. Возвращает FALSE и ошибку, если файл уже существует)

Ответ №3:

Вы могли бы попробовать с помощью этих функций — одна рекурсивно создает путь к папке, а другая создаст пустой файл по указанному пути.

 /* recursively create folder path */
function createdir( $path=null, $perm=0644 ) {
    if( !file_exists( $path ) ) {
        createdir( dirname( $path ) );
        mkdir( $path, $perm, true );
        clearstatcache();
    }
}

/* create an empty file ensuring that path is constructed */
function createfile( $path=false, $filename=false ){
    if( $path amp;amp; $filename ){
        createdir( $path );
        file_put_contents( $path . DIRECTORY_SEPARATOR . $filename, '' );
        return true;
    }
    return false;
}


$dir=$_SERVER['DOCUMENT_ROOT'] . '/path/to/dir';
$filename='geronimo.txt';

$result=call_user_func('createfile', $dir, $filename );
  

Комментарии:

1. Я не понимаю, почему вы бы использовали call_user_func

2. это вопрос личных предпочтений

Ответ №4:

Я хочу сделать это более очевидным для тех парней, которые пришли сюда для :

«Как создать файл по определенному адресу в PHP»

 function createFile($name, $address){
    $createfile = fopen($address.'/'.$name, 'x');
}

  

Вот и все . Эта функция примет адрес и имя вашего файла (как бы вы его ни называли), и он сделает это для вас по этому точному адресу

ВНИМАНИЕ: для тех, кто думает, что это то же самое, что и ответ другого парня, так что это не так, потому что у меня была ошибка и проблема с ответом, поэтому я попытался разделить address и filename , и я исправил свою проблему

Комментарии:

1. этот ответ уже был дан, даже в вопросе!

2. @jasie это отличается от ответа, у меня была ошибка с ответом, о котором вы говорите! итак, я попытался опубликовать его и дать понять, есть ли у кого-нибудь еще такая же проблема, как у меня :))