【问题标题】:Upload file permission上传文件权限
【发布时间】:2014-04-22 15:08:11
【问题描述】:

我有这样的 PHP 代码:

<?php
ini_set('display_errors', true);
error_reporting(E_ALL);

$error = array();
if (isset($_POST['submit'])) {
    $dir = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'upload';
    if (!empty($_FILES)) {
        $tmp = $_FILES['file']['tmp_name'];
        $file = $dir . DIRECTORY_SEPARATOR . $_FILES['file']['name'];
        if (is_uploaded_file($tmp)) {
            if (!chown($dir, 'nobody')) {
                $error[] = 'Owner tidak bisa di replace!';
            }
            if (!chmod($dir, intval(755, 8))) {
                $error[] = 'Direktori "' . $dir . '" tidak bisa diberi akses!';
            }
            if (!move_uploaded_file($tmp, $file)) {
                $error[] = 'Gagal memindahkan berkas "' . $file . '"';
            }
            if (file_exists($file)) {
                $error[] = 'Berhasil di unggah! ' . $file;
            }
        } else {
            $error[] = 'Berkas tidak bisa di unggah.';
        }
    }
}
?>

运行此代码时会出现以下消息:

Warning: chown(): Operation not permitted in /var/www/html/jdih/upload.php on line 23

Warning: chmod(): Operation not permitted in /var/www/html/jdih/upload.php on line 24

Warning: move_uploaded_file(/var/www/html/jdih/upload/06-naiveBayes-example.pdf): failed to open stream: Permission denied in /var/www/html/jdih/upload.php on line 25

Warning: move_uploaded_file(): Unable to move '/tmp/phpMHL5CQ' to '/var/www/html/jdih/upload/06-naiveBayes-example.pdf' in /var/www/html/jdih/upload.php on line 25

这是怎么回事?

【问题讨论】:

  • 看起来是文件夹权限问题。您可能需要chmod 具有正确写入权限的文件夹。
  • 看来,你没有权限执行chowmchmod()
  • 看看相关问题 ------------------------------------------------ -------------------------------------------------- >

标签: php


【解决方案1】:

您应该验证文件权限文件所有者。

更改文件权限:

chmod -R 775 /var/www/html/jdih

并将所有者设置为运行您的 apache 服务器的用户。

chown www-data:www-data /var/www/html/jdih

注意:所有者取决于您的发行版,在 Ubuntu 上是 www-data,它可能是 httpdhttp 或其他。

【讨论】:

  • 使用 chmod 777 UPLOAD_PATH 上传文件成功,但是 chmod 755 无法上传文件...有什么好的解决办法?
  • 请仔细阅读,我写的是chmod 775。并且您必须验证 UPLOAD_PATH 的所有者是运行您的 apache 的同一用户。使用ls -l 查看文件的所有者。并在您的 apache 配置文件中搜索运行 apache 的用户。
【解决方案2】:

进入终端,输入:

chmod -R 775 /your/upload/folder/path

然后你在这个目录中设置写权限

【讨论】:

  • 仍然显示错误...警告:chown():第 23 行 /var/www/html/jdih/upload.php 中不允许操作警告:chmod():/ 中不允许操作第 24 行的 var/www/html/jdih/upload.php 警告:move_uploaded_file(/var/www/html/jdih/upload/06-naiveBayes-example.pdf):无法打开流:/var/www 中的权限被拒绝/html/jdih/upload.php 在第 25 行警告:move_uploaded_file():无法在 /var 中将 '/tmp/phpwxDnR9' 移动到 '/var/www/html/jdih/upload/06-naiveBayes-example.pdf' /www/html/jdih/upload.php 第 25 行
  • 你也可以更改自己的文件夹,chown -R groupname /pathfolder
猜你喜欢
  • 2011-03-29
  • 2010-10-11
  • 2014-08-09
  • 2023-04-02
  • 2014-03-08
  • 2013-02-05
  • 2017-11-18
  • 2014-08-18
相关资源
最近更新 更多