繁体   English   中英

无法使用 PHP move_uploaded_file 在 EC2 中上传文件

[英]Unable to upload file in EC2 using PHP move_uploaded_file

我正在尝试在 EC2 中使用 PHP 上传 zip 文件。

$count = 0;
    if ($_SERVER['REQUEST_METHOD'] == 'POST'){
        foreach ($_FILES['files']['name'] as $i => $name) {
            if (strlen($_FILES['files']['name'][$i]) > 1) {
                if (move_uploaded_file($_FILES['files']['tmp_name'][$i], $dirPath.strtolower($name))) {
                    $count++;
                }else{
                die ("not success no file sorry in move_upload" . $dirPath.strtolower($name) . "  ". $numFiles . " ".$count);
              }
            }else{
              die ("not success no file sorry in strlen" . $numFiles . " ".$count);
            }
        }
    }else{
      die ("not success no file sorry" . $numFiles . " ".$count);
    }

此代码在if (move_uploaded_file , $_FILES 没问题。但问题出在move_uploaded_file 中失败。

我的 ps 辅助 | grep apache 输出是

apache   23762  0.0  3.1 570272 32488 ?        Sl   Mar29   0:14 /usr/sbin/httpd
apache   26487  0.0  2.7 565912 27628 ?        Sl   Mar30   0:08 /usr/sbin/httpd
apache   26488  0.0  3.3 572044 34396 ?        Sl   Mar30   0:08 /usr/sbin/httpd
apache   27416  0.0  2.7 762324 28080 ?        Sl   Mar30   0:07 /usr/sbin/httpd
apache   27838  0.0  2.5 563948 26104 ?        Sl   Mar30   0:06 /usr/sbin/httpd
apache   27839  0.0  2.7 566384 28124 ?        Sl   Mar30   0:06 /usr/sbin/httpd
apache   28124  0.0  2.3 560860 23472 ?        Sl   Mar30   0:05 /usr/sbin/httpd
apache   28173  0.0  1.9 455504 20160 ?        Sl   Mar30   0:04 /usr/sbin/httpd
apache   28175  0.0  1.9 455504 20168 ?        Sl   Mar30   0:04 /usr/sbin/httpd
apache   28176  0.0  1.9 455504 20200 ?        Sl   Mar30   0:04 /usr/sbin/httpd
ec2-user 31044  0.0  0.2 110460  2192 pts/0    S+   01:47   0:00 grep --color=auto apache

我试图sudo chown -R ec2-user /var/www/html但 stll 上传失败。

请帮忙。 相同的 PHP 上传代码适用于其他共享托管服务提供商。 这个 php 文件被 Jquery Ajax 调用。

我认为问题是 $dirPath.strtolower($name)。

if (move_uploaded_file($_FILES['files']['tmp_name'][$i], $dirPath.strtolower($name))) {

据我所知,你必须写: strtolower($dirPath . $name)

if (move_uploaded_file($_FILES['files']['tmp_name'][$i], strtolower($dirPath . $name))) {

在所有其他代码中,您必须更改此!

大家好,我最近确实遇到了这个错误,我也是初学者,仅用了 3 个小时就解决了这个问题,这对我有帮助。 我使用 Linux AMI EC2 实例。

问题可能完全在于文件夹的“可写性”(抱歉,我不太熟悉术语,请耐心等待)可能只允许根目录使用

首先在live serve上制作一个脚本并包含此代码以了解将执行php的move_uploaded_file命令的客户端的名称是什么

<?php
echo exec('whoami');    
?>

然后它的结果是给我“apache”作为我的客户的用户在它查找文件夹之后,目标检查它是否可以由客户端使用

ls -lh /var/www/文件夹/

然后你会看到像 root 和 www 一样将其更改为

chown -R apache:apache/文件夹目的地

时刻注意用户是whoami php脚本的结果

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM