它对本地主机很好。但是,当我上传到我的服务器时,我收到此错误:
警告:move_uploaded_file(uploads / 55a92822cc379 ^ 0C3C66D7264AB79F9D6963823CCC90CEC2A8221.png):无法打开流:第51行的/var/www/chrispantelli.me/public_html/upload/upload.php中的权限被拒绝
警告:move_uploaded_file():无法移动' / tmp / phpk7R86o'到'上传/ 55a92822cc379 ^ 0C3C66D7264AB79F9D6963823CCC90CEC2A8221.png'在第51行的/var/www/chrispantelli.me/public_html/upload/upload.php中
这是代码:
答案 0 :(得分:0)
这意味着拥有php(Web服务)进程的用户ID对目标文件夹没有写入权限。该脚本未列出该目标文件夹的内容,因此请检查以确保Web服务所有者在那里具有写入权限(或者如果另一个用户ID拥有该目录,您也可以使用组。)
编辑: 770 =>用户(所有者)具有读/写/执行,组是读/写/执行,而其他用户没有权限。 例如,如果主机上运行的http进程由“apache”userID拥有,那么如果uploads目录也由“apache”拥有,则700权限将起作用。拥有该目录的用户可以写入该目录。 如果uploads目录由root拥有,可以说,但该组是“apache”,然后假设apache用户在apache组中,770权限将起作用,因为你也给了组写权限。
为了找到拥有您的http进程的用户,假设您正在运行apache:
ps -ef |grep http
这应该给你一些看起来像这样的东西:
apache 1234 5678 0 Jul17 ? 10:00:24 httpd
在这种情况下,第1列是拥有该进程的用户。您可以通过以下方式获取该用户的组:
groups apache
apache : apache
这意味着用户ID“apache”是组“apache”的成员。所以,如果是这种情况,那么尝试更改uploads目录的所有者,如下所示:
chown apache /path/to/your/uploads/dir
然后您可以将权限更改为700(因为如果人们从您的网站上传,则apache是唯一需要写访问权限的ID。
chmod 700 /path/to/your/uploads/dir
同样,如果另一个用户ID(比方说root)拥有上传目录,并且你想保持这种方式,你可以这样做:
chgrp apache /path/to/your/uploads/dir
chmod 770 /path/to/your/uploads/dir
这将使apache组的成员(可能只是一个用户“apache”)对该目录进行写访问,允许您上传。
希望这是有道理的。