用于创建新文件的fopen错误?

时间:2015-04-27 21:31:27

标签: php

我正在关注在php中创建新文件的指南,我正在使用以下代码:



    function create($user, $name) {
		/* Later on, this will connect to another server*/
		$dir = $user->getFolder() . "/Projects/". $name;
		if(file_exists($dir)) {
			$this->error = "Directory: " . $dir . " already exists.";
		} else {
			mkdir($dir);
			//Create the users.json file and add the owner
			$json = fopen($dir . "/Data/users.txt", "w") or die("Cannot open file");
			fclose($json);
		}
	}




目录已创建但我收到以下错误:"警告:fopen(Jake / UserFolder // Projects / test / Data / users.txt):无法打开流:D中没有此类文件或目录:第14行:\ xampp \ htdocs \ Collabs \ Objects \ Scripts \ Project.php 无法打开文件"

2 个答案:

答案 0 :(得分:1)

您的错误中显示的路径看起来可能是问题所在。

  

杰克/ UserFolder //项目/测试/数据/ users.txt

UserFolder和Projects之间有两个斜杠。看起来将代码更改为

$dir = $user->getFolder() . "Projects/". $name;

将摆脱额外的斜线。

答案 1 :(得分:0)

可能出现的一些问题:

  1. 您没有使用前导/传递路径,因此fopen()将相对搜索脚本正在执行的目录。我假设您要传递绝对路径
  2. 您正在测试file_exists(),您还应检查is_dir(),以捕获并处理已存在具有相同路径的文件的情况
  3. 您可以考虑调用mkdir($dir, 077, true)来创建 中间目录(见mkdir() documentation