【问题标题】:permission issue when uploading via php to a folder on my local drive通过 php 上传到本地驱动器上的文件夹时出现权限问题
【发布时间】:2011-10-25 23:00:47
【问题描述】:

我在我的 C 盘 (c:/artwork) 中创建了一个文件夹,我用它来通过 php 中的表单上传文件,如下所示:

<input name="file" type="file">

问题是,当文件上传时,我转到文件夹并尝试打开文件,我收到以下消息: 照片库无法打开此图片,因为您没有访问文件位置的权限

如果我手动将图片复制并粘贴到同一文件夹中,则没有问题。我可以完美打开和查看图片!

我猜它必须是通过 php 上传时的权限问题,但至于什么?我该如何解决?

谢谢

编辑(添加代码)

$destination = 'c:/public_html/discography/artwork/'; // path to the upload folder

if (is_dir($destination) && is_writable($destination)) {
    // if file already exists, ask what to do

    // upload the file  
    $ok = move_uploaded_file($_FILES['file']['tmp_name'], $destination . $_FILES['file']['name']);

    // if file uploaded, go ahead an insert record in database
    if ($ok) {
        $stmt = $conn->stmt_init(); // initialize a prepared statement

        $stmt->prepare($sql);
        $stmt->bind_param('s', $_FILES['file']['name']);
        $stmt->execute();
        $stmt->free_result(); // free the database resources for other queries

        // if success
        if ($stmt->affected_rows > 0) {
            $success = true;
        } else {
            $err_msg = $stmt->error;
        }

        $stmt->close(); // close statement  
    }

} else {
    $err_msg = "'$destination' must be a valid, writable directory!";
}

【问题讨论】:

  • 哪个用户正在运行 Apache / IIS?可能仅在服务器用户/组上以读/写访问权限上传文件。如果是这种情况,您需要做的就是让您的用户成为服务器组的成员。
  • 我在本地开发环境中运行 apache/mysql/php
  • @NullUserException:我已经添加了代码(还没有完成)

标签: php file-permissions


【解决方案1】:

如果您尚未在 php.ini 中设置“upload_tmp_dir”指令,则文件将保存在临时文件夹中。在您的情况下,如果您使用的是 IIS,则为 C:\Windows\Temp,因此它继承了该目录的权限,而不是 c:/public_html/discography/artwork/。

要解决这个问题,要么设置 Temp 目录的权限,要么在 php.ini 中定义另一个存储 tmp 文件的位置。

【讨论】:

  • 就是这样!!!我知道上传的文件保存在 windows tmp 文件夹中,我只是没有意识到上传的文件继承了 tmp windows 文件夹的权限设置...我已将其更改为:upload_tmp_dir = "C:\public_html\ tmp”,它工作得很好!非常感谢!
【解决方案2】:

尝试使用 chmod() 修改该文件的权限。

【讨论】:

  • 没有办法手动完成,就像我通过服务器文件夹上的 ftp 而不是用 php 做的那样?
  • 大多数 FTP 客户端都允许您更改权限,前提是您有权这样做。如果您的客户不允许这样做,那么是时候寻找其他东西了。
  • 我同意!但我的问题是关于我的 c:/ 驱动器的权限问题以及为什么我可以访问我上传的文件夹但我无法观看图片
  • 如果您的 FTP 客户端允许本地浏览,那么您也应该能够通过客户端更改权限。
猜你喜欢
  • 1970-01-01
  • 2012-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-18
相关资源
最近更新 更多