所有权限和用户都是正确的仍然无法打开流:权限被拒绝

时间:2013-10-11 18:49:32

标签: php apache upload permissions centos

更新:在我的php中它是.com而不是.org,对如此小的东西如此痛苦

这让我绝对疯狂,我已经遍布这个网站,谷歌和寻找解决方案之间的每一个地方,我已经尝试了一切。目前在这里:

CentOS 6,apache 2

iptables已关闭 用户组:ftpdir 组中的用户:root,apache,fwf(我的ftp用户,ftp工作正常) 目录权限,全部启用以进行测试

rxwrxwrxw on /srv/www/floridawinefest.com/public_html/
rxwrxwrxw on /etc/tmp/

php.ini已禁用安全模式,启用文件上传,临时目录设置为/ etc / tmp,最大文件大小为5mb,已使用200k文件进行测试

使用apache:ftpdir

在public_html目录上运行chown

使用apache:ftpdir

在etc / tmp目录上运行chown

以递归方式对/ public_html

中的所有文件和目录运行chmod

尝试上传文件时仍然低于错误

Warning: move_uploaded_file(/srv/www/floridawinefest.com/public_html/topBG.jpg): failed to open stream: Permission denied in /srv/www/floridawinefest.org/public_html/uploader.php on line 11 Warning: move_uploaded_file(): Unable to move '/etc/tmp/php9TTyoR' to '/srv/www/floridawinefest.com/public_html/topBG.jpg' in /srv/www/floridawinefest.org/public_html/uploader.php on line 11

我的代码:

chmod($_FILES["file"]["tmp_name"], 0777); 

$success = move_uploaded_file($_FILES["file"]["tmp_name"], "/srv/www/floridawinefest.com/public_html/" . $filename_full);
echo "Succes: " . $success . "<br />";
chmod($filename_full, 0777);

if ($_FILES["file"]["error"] > 0)
{
    echo "Error: " . $_FILES["file"]["error"] . "<br>";
}
else
{
    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
    echo "Type: " . $_FILES["file"]["type"] . "<br>";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "Stored in: " . $_FILES["file"]["tmp_name"];
}

1 个答案:

答案 0 :(得分:0)

如此真实的故事(因为它已被回答)。我们有一个孩子写了这样的上传代码。将其转储到目录中。从未检查任何东西(就像你的代码没有)。几年过去了,土耳其的一些白痴上传了一个PHP脚本。几乎接管了服务器(我们在内核级别阻止了他的rootkit,获胜的层次安全)。所以需要考虑的事情

  1. 永远不要上传到您的根目录。创建一个目录,如果可以的话,关闭该目录的PHP处理(可以通过.htaccess完成)。消除文件上传的所有风险。
  2. 检查您的文件。在您的情况下,你想要一个图像。验证这一点的一个好方法是使用类似GD库和imagecreatefromjpeg之类的函数来确保它就像它所说的那样。