【问题标题】:php mkdir s not workingphp mkdir 不工作
【发布时间】:2014-10-30 11:06:46
【问题描述】:

所以我有这个非常直接的前言代码来创建一个用户输入的名称的目录,但它不会创建。 我要在其中创建它的文件夹是一个子文件夹。 当我在本地测试它时它工作得很好,但是在服务器上似乎有问题。 谁能帮帮我?

$title = str_replace(" ", "_", $_POST['title']);
if (!is_dir("uploads/".$title)){
        mkdir("uploads/".$title, 0777);

我猜它与路径有关?但我就是不知道为什么。

谢谢大家

克里斯

【问题讨论】:

  • 您是否具有创建文件夹的适当权限?
  • 您是否检查了您尝试添加此目录的目录的权限?
  • 检查你的错误日志,它可能会告诉你原因。例如,可能是网络服务器运行的用户不拥有您尝试在其中创建目录的子文件夹,也不允许组或其他人这样做。 (在这种可能的情况下:chown :the-group-of-the-webserver uploads && chmod g+rwx uploads)。

标签: php mkdir


【解决方案1】:

对于大多数托管服务提供商,您必须提供完整路径,而不是相对路径:

$root = dirname(__FILE__); // or whatever what points to root dir

$target = $root.'/uploads/'.$title; // save to a variable, to not repeat

if (!is_dir($target) {
     mkdir($target, 0777);
}

【讨论】:

    【解决方案2】:

    所以在检查了一些可能性(thanx for your help guy)之后,我意识到我的 ftp 程序没有正确显示上传文件夹。 这意味着通过主机服务器接口检查上传文件夹时,创建的文件夹确实出现了。但是当我通过我的 ftp 程序检查该文件夹是否已创建时,它并不存在。 所以一定有某种问题使我的 ftp 程序无法显示创建的文件夹...... 我不知道为什么会发生这种情况,但代码是这样工作的:

    $target = "uploads/".$title; // save to a variable, to not repeat
    
    if (!is_dir($target)) {
            mkdir($target);
            chmod($target, 0777);}
    

    感谢各位的帮助。

    克里斯干杯

    【讨论】:

    • mkdir() 在您提供第二个参数时在内部调用 chmod()
    猜你喜欢
    • 2017-07-30
    • 1970-01-01
    • 2016-01-28
    • 2012-09-16
    • 2015-09-24
    • 2011-03-07
    • 2013-09-19
    • 2013-06-21
    相关资源
    最近更新 更多