#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 это отличается от ответа, у меня была ошибка с ответом, о котором вы говорите! итак, я попытался опубликовать его и дать понять, есть ли у кого-нибудь еще такая же проблема, как у меня :))