【问题标题】:PHP- set chmod after successfully upload?PHP-成功上传后设置chmod?
【发布时间】:2013-04-23 19:18:56
【问题描述】:
<?php

if (isset($_FILES['datei']))
{
move_uploaded_file($_FILES['datei']['tmp_name'], 'upload/'.$_FILES['datei']['name']);

echo "Filee successfully uploaded.";

chmod($_FILES["datei"]["name"], 777);

echo "<p> Chmod successfully set!<br>";
} 

?>

上传有效,但未设置 chmod。谁能帮忙检查一下代码?

【问题讨论】:

  • 您是否将 Apache 作为 sudoer 运行?

标签: php permissions chmod


【解决方案1】:

您将文件移动到 'upload/'.$_FILES['datei']['name'],但 chmod $_FILES['datei']['name']。请注意,您错过了“上传/”。将 chmod 更改为:

chmod('upload/'.$_FILES['datei']['name'], 0777);

【讨论】:

    【解决方案2】:

    您需要有文件的绝对路径。 例如:

    chmod("/var/www/files/uploads/" . $_FILES["datei"]["name"] . ".jpg", 0777)
    

    确保文件位置确实存在。这样做的廉价而肮脏的方法:

    if(!file_exists("/var/www/files/uploads/" . $_FILES["datei"]["name"] . ".jpg")) {
      die("File not found with path: /var/www/files/uploads/" . $_FILES["datei"]["name"] . ".jpg");
    }
    

    编辑:另外,在 Aquillo 的回答中,应该是 0777。

    【讨论】:

    • 谢谢,所有的回答者都为我工作,感谢 0777 许可的建议。
    【解决方案3】:

    您应该将 chmod 设置为

    chmod($_FILES["datei"]["name"], 0777);
    

    您可以阅读更多关于它的信息here

    【讨论】:

    • Apache 使用 easyscp 而非 root 运行。 0777 不改变权限。
    • 可能是由于多个错误。 A)使用十进制而不是八进制。 B)您移动了文件,但路径似乎没有相应设置(如其他人所述)。
    【解决方案4】:

    你需要在模式前加上一个零 (0),所以

    mode should be 0777
    chmod($_FILES["datei"]["name"], 0777); //correct way of mode
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-10
      • 1970-01-01
      • 2013-08-31
      相关资源
      最近更新 更多