PHP fopen不使用目录变量

时间:2017-12-05 18:02:27

标签: php fopen

我有一个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中搜索过但是没有什么对我有用而且不知道它会是什么?

3 个答案:

答案 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);