Php 使用SSH和CHMOD更改文件权限以允许文件上载

Php 使用SSH和CHMOD更改文件权限以允许文件上载,php,mysql,ssh,chmod,Php,Mysql,Ssh,Chmod,因此,我得到了一个被拒绝的权限,因为这个.php脚本的文件权限不正确 如何使用SSH(或SFTP)允许文件上载而不获得拒绝的权限,以获得允许图像上载的权限 以下是供参考的php脚本: Warning: move_uploaded_file(activities.png): failed to open stream: Permission denied in /var/www/vhosts/default/htdocs/backoffice/db/changelogo.php on

因此,我得到了一个被拒绝的权限,因为这个.php脚本的文件权限不正确

如何使用SSH(或SFTP)允许文件上载而不获得拒绝的权限,以获得允许图像上载的权限

以下是供参考的php脚本:

    Warning: move_uploaded_file(activities.png): 
failed to open stream:
 Permission denied in /var/www/vhosts/default/htdocs/backoffice/db/changelogo.php on line 17
Warning: move_uploaded_file():
 Unable to move '/tmp/phpTNQXEi' to 'activities.png' in /var/www/vhosts/default/htdocs/backoffice/db/changelogo.php on line 17

这里真正的问题是,首先没有使用正确的权限编写文件。我怀疑您没有提前在应用程序中设置
umask

我会小心使用此设置,因为通过对任何给定上传文件设置全局读/写,很容易为自己创建安全问题。采取通常的安全预防措施,可能只将读/写设置为web用户,而不设置为公共目录。甚至可以设置一个按需运行的作业,或者在一分钟内为您移动这些作业,以减少您的安全威胁

从文档中的注释中,可以快速了解以下内容:

    <?php
include 'realtydevkit.php';
session_start();

umask(0077);

$name = $_FILES['yourlogo']['name'];
$tmpname = $_FILES['yourlogo']['tmp_name'];
$error = $_FILES['yourlogo']['error'];

ini_set("display_errors", 1);

echo $error;

if ($name) {
    $directory = $name;
    $userid = $_SESSION['userid'];
    $type = "logo";

    $file = move_uploaded_file($tmpname, $directory);

    if ($file) {    
    mysql_query("INSERT INTO usercontent
    (`userid`, `type`, `url`) VALUES
    ('$userid', '$type', '$directory')");
    echo 'Uploaded';
    echo "<img src='".$directory."'/>";
    } else {
    echo 'There was an error moving the file.';
    }

    chmod($directory, 0644);
}


?>

文档中的更多信息:


您可以使用PHP的
chmod()
函数

这将允许您更改要将文件传输到的文件夹的权限。文件移动后,您可以随时将其chmod回原处

或者,您也可以在任何人到达您的站点之前手动对文件夹进行chmod


在处理驻留在服务器中的文件和文件夹的权限时,请小心。这些文件可以从外部世界访问,设置非常开放的权限(例如0777)将允许任何脚本或任何人在该文件夹中创建、删除和更改文件

非常感谢!但是,这是一个现有的文件,我通过SSH更改了它的权限,但是,这并不影响被拒绝的权限。这将是非常有用的影响rw特权,虽然。我将尝试将umask和CHMOD放在我现有的php脚本中,看看它是否允许文件上传(图片上传),检查我的原始帖子,看看我做错了什么。我仍然收到一个被拒绝许可的错误。谢谢,请查看PhilWinkle的帖子和我的原创文章以供参考。
<?php
// files will create as -rw-------
umask(0077);

// create a file, eg fopen()

// give access: -rw-r--r--
chmod('/path/to/file', 0644);
?>