[英]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.