【问题标题】:I think I'm misusing php mkdir我想我在滥用 php mkdir
【发布时间】:2016-09-16 14:48:35
【问题描述】:

我正在用 PHP 编写一个 Web 应用程序,我想给它一个功能,让用户命名他们的应用程序实例,然后 PHP 根据该名称为应用程序创建一个文件夹(目录)结构。

为此,我编写了一个 PHP 脚本,它从 HTML 表单中获取一个 $_POST 变量,然后使用 mkdir() 函数。这不是实际的脚本,但想法如下:

<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
    <input type="text" name="foldername">
    <input type="submit" value="submit">
</form>

<?php
    $foldername = 'test';
    mkdir($foldername, 0777, false);
?> 

我为变量 $foldername 分配了名称“test”,因为我认为当我最初为它分配 $_POST['foldername'] 的值时,我可能使用了不正确的语法。

这是 TL;DR 问题: 当我在 Web 表单上按提交时,此脚本不起作用。它不会产生错误,但也不会生成文件。但是,当我从命令行运行它时,它确实创建了该文件夹。我认为这不是权限问题,因为我是目录的所有者及其父目录。我在我自己的机器上的 Apache 上运行它。任何想法我做错了什么?或者关于替代方法的任何想法?

【问题讨论】:

  • 你使用的是什么版本的 PHP?
  • PHP 5.5.9.. 我很确定这是稳定版本
  • 当你说“它不会产生错误”时,你真的检查过你的错误日志吗?
  • I am the owner of the directory and its parent.你也是apache用户吗?
  • apache 以自己的用户身份运行。如果您的帐户是 dir/parent 的所有者,那么 apache 几乎肯定无权在其中进行任何更改。

标签: php apache mkdir


【解决方案1】:

您是否尝试过使用绝对路径?

<?php
    $foldername = '/root/dir/test'; // Note the slash at the beggining
    // $foldername = 'test';
    mkdir($foldername, 0777, false);
?> 

【讨论】:

  • 感谢@Kenny Lajara,添加斜线似乎是我缺少的部分
  • 很高兴能帮到你。
猜你喜欢
  • 2018-08-30
  • 2011-05-07
  • 2018-04-26
  • 2018-06-14
  • 2018-01-16
  • 2015-07-30
  • 2014-10-30
  • 2011-05-31
  • 2016-07-03
相关资源
最近更新 更多