如何在指定目录中创建文件 - PHP

6
如何在特定目录中创建文件?
目前我的代码如下:

$username = $_POST["username"];

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

mkdir($filedir);

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

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

I have also tried fopen but that didn't work :(

我懂了!!!它是

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

Thanks for all the help guy :) really appreciated.


1
这个为什么不起作用?你有收到任何错误吗?如果你想要帮助,你需要更具体一些。 - Charlotte Dunois
1
你尝试过完整路径吗?例如"/var/www/your_domain_path/u/".$username; - tanaydin
@CharlotteDunois 我都不确定,可能得重启我的服务器,然后看看有没有解决问题。 - meme
也许可以尝试使用 $createfile = fopen( $_SERVER['DOCUMENT_ROOT'] . '/u/'.$username.'/filename.php' ); 代替。 - Charlotte Dunois
@CharlotteDunois 当我尝试这样做时,会出现错误,提示“fopen()期望至少2个参数,但只提供了1个”。 - meme
哦,对了,需要模式。$createfile = fopen( $_SERVER['DOCUMENT_ROOT'] . '/u/'.$username.'/filename.php', 'w+'); - Charlotte Dunois
4个回答

4

Answer was this :

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

Thanks for all the help guy :) really appreciated.


3

mode 是必填项。指定您需要对文件/流的访问类型。

fopen(filename,mode)


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

可能的取值:
  • "r"(只读。从文件开头开始)
  • "r+"(读/写。从文件开头开始)
  • "w"(只写。打开并清除文件内容;如果文件不存在则创建新文件)
  • "w+"(读/写。打开并清除文件内容;如果文件不存在则创建新文件)
  • "a"(只写。打开并写入到文件结尾或创建新文件,如果文件不存在)
  • "a+"(读/写。通过写入到文件末尾来保留文件内容)
  • "x"(只写。创建新文件。如果文件已经存在,则返回FALSE和错误)
  • "x+"(读/写。创建新文件。如果文件已经存在,则返回FALSE和错误)

0
你可以尝试使用这些函数 - 其中一个递归地创建文件夹路径,另一个将在指定路径中创建空文件。
/* 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 && $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 );

我不明白为什么你要使用call_user_func - Charlotte Dunois
这是个人喜好的问题。 - Professor Abronsius

0
我想让那些来这里寻找以下内容的人更容易理解: “如何在PHP中创建特定地址的文件”
function createFile($name, $address){
    $createfile = fopen($address.'/'.$name, 'x');
}

就是这样。此函数将采用地址和文件名(您想要的任何名称),并在该确切地址中为您创建它。

注意: 对于那些认为这与另一个人的答案相同的人,我要说不同,因为我遇到了错误和问题,所以我尝试分割地址文件名,并解决了我的问题。


这个答案已经在问题中给出了! - jasie
@jasie,这与你提到的答案不同,我在使用该答案时遇到了错误!因此,我尝试发布它并清楚地表明如果其他人有相同的问题:)) - Hosseinreza

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接