为什么我的 apache 无法打开流?

为什么我的 apache 无法打开流?

我正在尝试复制和取消链接 Apache 服务器上的文件。我大约 1 小时前尝试过这样做。我无法想象问题是什么。

这是我的消息来源:

if (copy("users_ftp/".$user_ftp.'/'.$_REQUEST['name'],"uploaded/".$name_file)) {
  chmod("users_ftp/".$user_ftp, 0777);
  chmod("users_ftp/".$user_ftp.'/'.$_REQUEST['name'], 0777);
  if(unlink("users_ftp/".$user_ftp.'/'.$_REQUEST['name']))
  {
    // success, do stuff
  } else {
    print('nem törölt fájl'); 
  }
} else {
  print('sikertelen copy');
}   

我尝试像这样使用它:

copy("/var/www/virtual/tigyisolutions.hu/boxy/htdocs/users_ftp/".$user_ftp.'/'.$_REQUEST['name'],"/uploaded/".$name_file)

但错误是一样的。

这是错误:

Warning: copy(/uploaded/ftp_dir_collect.php): failed to open stream: No such file or directory in /var/www/virtual/tigyisolutions.hu/boxy/htdocs/upload.php on line 261
sikertelen copy
Warning: md5_file(uploaded/1782848509512876a6863a2-08-58-30.php): failed to open stream: No such file or directory in /var/www/virtual/tigyisolutions.hu/boxy/htdocs/upload.php on line 270

Warning: sha1_file(uploaded/1782848509512876a6863a2-08-58-30.php): failed to open stream: No such file or directory in /var/www/virtual/tigyisolutions.hu/boxy/htdocs/upload.php on line 271

它说没有流。但我验证了文件存在于我的 FTP 上。我使用了chmod 777,但它不起作用。还有什么问题?

答案1

最有可能是权限问题或文件名无效。您提供的路径代码与日志中的路径不太匹配。我建议您验证您是否访问了正确的目录和文件。

您没有共享相关目录的权限。仅因为它可以通过 FTP 访问并不意味着 Web 服务器也可以访问它。namei如果某个目录可供用户访问,则使用如下方法:

sudo -u <username> namei -m /path/to/target

你的 Web 服务器(Apache?)以哪个<username>用户身份运行?

我建议你像这样写代码(https://stackoverflow.com/a/6070449):

if (file_exists($fileToCopy)) {
    if (is_readable($fileToCopy)) {
         if (is_writeable(dirname($target))) {
             copy($fileToCopy, $target);
         } else {
             die('You dont have permission to write into '.dirname($target));
         }
    } else {
         die('You dont have permission to read '.$fileToCopy);
    }
} else {
    die('File '.$fileToCopy.' does not exist');
}

这将告诉您权限关闭的位置。您没有分享您在哪个(基于 Unix)操作系统上运行此程序,诸如此类的事情SELinux也可能是造成这种情况的原因。通过查看 的auditd日志文件进行检查。

关于你的代码中明显的WTF:

绝不,绝不在缓慢而痛苦的死亡威胁下,在代码中使用未检查的用户输入。发布的代码可能会被操纵,将系统文件写入可能由 Web 服务器提供服务的目录中。这会引发各种恶作剧。

更多信息远程文件包含代码注入

相关内容