0

更新:在我的 php 中是 .com 而不是 .org,对于这么小的东西太痛苦了

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

CentOS 6,阿帕奇 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"];
}
4

1 回答 1

0

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

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