使用PHP创建一个新目录,以及在该目录中创建一个文件。

5
我最近开始涉及一些HTML和PHP,遇到了一个可能很容易解决但我却无法修复的错误。
简而言之,我想创建一个目录,然后在该目录中创建一个与该目录同名的.txt文件,例如"/number/number.txt"。虽然创建文件或创建目录似乎很简单,但我在尝试同时完成这两个操作时遇到了无数麻烦。
以下是我的代码:
mkdir($postnum, 0777);
chmod($postnum, 0777);

$post = "/" . $postnum . "/" . $postnum . ".txt";
$post = boards(__FILE__) . $post;

$po = fopen($post, 'w+') or die("Can't open file");
chmod($post, 0777);

一些问题出现在我写这个的过程中,我读到使用 mkdir 可以设置创建目录的权限,但是尽管我认为我做得正确,它并没有起作用。所以我紧接着运行了 chmod。
然后,我希望只用 /$postnum/$postnum.txt 就能打开目录,但是当我尝试这样做时,我会得到错误信息,我必须添加 "boards(FILE)" 部分才能使其正常工作。(附带说明,“boards”是我正在工作的目录)
即使这样,虽然它不会给我“无法打开文件”的错误信息,但它也没有创建文件或任何其他东西。
我确保与文件有关的任何文件或文件夹的权限都被设置为 0777,因此可能不是这方面的问题。(另外,我知道让所有文件完全公开可能不是最好的想法;一旦我将其正常工作,我会确保将权限设置为更安全的值)
你们有什么想法吗?

file_put_contents($file_name) 是一个很好的辅助函数,可以轻松地写入文件。试试看,看它是否能帮到你。 - JamesSwift
3个回答

2
making directory and creating path:-

$new_folder=mkdir('uploads\\'.$folder_name, 0777, true);

('uploads\\'.$folder_name)->path where you create folder like www->upload->folder name(whatever you provide)

$path="uploads\\".$folder_name."\\";//if you want to provide path you can provide this way

1

mkdir函数接受相对于文件系统根目录的路径,而不是文档根目录。

如果您在*nix系统上,您的网站文档根目录可能位于类似于/var/www/sitename/html的路径中,但您正在尝试创建/number/number.txt,而您的帐户没有权限执行此操作。将传递给mkdir的路径更改为您具有创建文件夹和文件权限的文件系统中的某个位置,您的代码应该可以正常工作。

编辑:

您问题中的代码实际上并没有尝试写入任何内容。通过调用fopen,您已经创建了一个文件句柄,但您需要调用fwrite来实际将数据写入文件。如@JamesSwift所建议的那样,您可能需要查看file_put_contents


抱歉,在我的描述中我没有明确说明,文件夹(/numbers)已经被创建了,但是文件(/numbers/numbers.txt)没有被创建,尽管程序没有出现错误信息。根据你所说的mkdir采用相对于文件系统根目录的路径,但是我尝试根据此正确设置它,当我尝试查看它时,收到了“网站有一个编程错误”的页面。文件夹的完整系统路径应该是“/home/username/webhome/boards/number/”。我的权限从/username/开始。我应该从哪里开始? - user1767206

0

这里,试一下这个:

$root = realpath($_SERVER["DOCUMENT_ROOT"]);
mkdir("$root/root_website_folder/php/testing_folder", 0777);

PHP使用真实路径而不是虚拟路径,我们将真实路径分配给$root,然后添加您网站根目录的虚拟路径


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