【问题标题】:MKDIR and CHMOD working , upload doesn't succeedMKDIR 和 CHMOD 工作,上传不成功
【发布时间】:2012-10-11 11:33:19
【问题描述】:

我有一个非常简单的 PHP 脚本,它根据产品 ID 创建一个目录,这些文件夹用于将产品 ID 特定的图像上传到其中。

一旦这个文件夹是用PHP脚本mkdir('folder',0777)创建的,我用PHP上传一个图像到刚刚创建的文件夹。这不起作用:move_uploaded_file 函数在服务器 safe_mode 函数中返回一个规则。尽管此服务器 safe_modeproperty 已关闭,但仍然给出此错误/警告。

当我检查我的 FTP 用户帐户时,我看到权限为 777 的制作目录,但上传不会成功上传到该目录...

奇怪的是,当我手动删除创建的目录并创建一个新目录(通过 FTP)时,上传工作完美!

有没有人知道如何解决这个问题?我不是那个服务器经验丰富:) 谢谢!

【问题讨论】:

  • 显示确切的错误消息和您正在使用的确切路径。 PHP的安全模式限制独立于FTP
  • 这可能是一个“基本限制”,有时被误称为“安全模式”。检查是否存在有效的基本限制。
  • 但是如果开启了安全模式,用PHP脚本上传图片也不可能吧?错误消息:警告:move_uploaded_file() [function.move-uploaded-file]:安全模式限制生效。不允许 uid 为 10109 的脚本访问 /var/www/vhosts/upsn.be/httpdocs/admin/logic 中 uid 502 拥有的 /var/www/vhosts/upsn.be/httpdocs/admin/products/18 /addfoto.php 第 19 行

标签: php mysql permissions webserver


【解决方案1】:

将此用于 mkdir 用户名是您在 uplod 文件夹中的文件夹名称

 if(!is_dir('uploads/'.$username . "/")) {
 mkdir('uploads/'.$username . "/", 0755);
 }`

【讨论】:

    【解决方案2】:

    您必须考虑到,在创建目录时,创建掩码与umask

    $old = umask( 0 );
    mkdir( 'folder', 0777, true );
    umask( $old );
    

    【讨论】:

      【解决方案3】:

      您的目录上的模式可能会受到您当前的 umask 的影响。它会结束 拥有(mkdir-mode & (~umask)) 权限。

      试试:

      $oldmask = umask(0);
      mkdir('folder', 0777);
      umask($oldmask);
      

      【讨论】:

        猜你喜欢
        • 2019-08-04
        • 2017-06-18
        • 2011-05-22
        • 2010-10-18
        • 2011-01-04
        • 1970-01-01
        • 2020-07-12
        • 2011-04-15
        • 2011-03-08
        相关资源
        最近更新 更多