我有一个PHP代码,它创建一个随机名称,然后创建目录,然后我需要在目录中创建和编写一个文本文件。 它创建了目录,但在需要创建文本文件时却没有。 这就是我所拥有的:
这会创建随机名称
$letra1 = chr(rand(65,90));
$letra2 = chr(rand(97,122));
$letra3 = chr(rand(65,90));
$letra4 = chr(rand(97,122));
加入所有角色:
$letras = $letra1 . $letra2 . $letra3 . $letra4;
这会创建de directory:
mkdir("a/$letras", 777);
在这里,我认为我遇到了问题,fopen:
$archt = fopen("a/$letras/text.txt", "w") or die("");
$txt = "";
fclose($archt);
我认为这不是一个烫发问题,我已经给所有目录777了......
我已经尝试了很多stuf,我已经从stackoverflow中搜索过但是没有什么对我有用而且不知道它会是什么?
答案 0 :(得分:0)
正如我在对问题的评论中所述:你正在将一个小数传递给mkdir函数,因为它传递了一个八进制,这是所需要的。结果没有正确设置权限。
在开发环境中正确设置解释器(php)后,您的代码会产生以下错误:
PHP警告:fopen(a / DeOq / text.txt):无法打开流: 第11行/home/dave/Desktop/test/test.php中的权限被拒绝
为了避免不得不仔细阅读评论:
此处的mkdir()文档:http://php.net/manual/en/function.mkdir.php引用chmod()目录以解释模式。模式必须是八进制
请注意,模式不会自动假定为八进制值,因此为了确保预期的操作,您需要在模式前加零(0)。字符串如" g + w"不会正常工作。
http://php.net/manual/en/function.chmod.php
除了在mkdir()函数中将777更改为0777之外,还要确保" a"目录实际存在,因为mkdir()函数不会创建目录" tree"。 ""必须已存在才能在其下创建目录。
此代码经过测试并有效:
<?php
$letra1 = chr(rand(65,90));
$letra2 = chr(rand(97,122));
$letra3 = chr(rand(65,90));
$letra4 = chr(rand(97,122));
$letras = $letra1 . $letra2 . $letra3 . $letra4;
mkdir("a/$letras", 0777);
$archt = fopen("a/$letras/text.txt", "w") or die("Death");
$txt = "";
fclose($archt);
答案 1 :(得分:0)
您还需要为子目录授予权限。
loginPage
答案 2 :(得分:-1)
由于"$letras"
隐藏了变量
$dirLocation = "a/" . $letras;
mkdir($dirLocation, 0777);
$fileLocation = $dirLocation . "/text.txt";
$archt = fopen($fileLocation, "w") or die("");
$txt = "";
fclose($archt);