我正在尝试使用 PHP 在 EC2 中上传 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 aux | 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 但仍然上传失败。
请帮忙。相同的 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 实例。
问题可能全都与文件夹的“可写性”(抱歉,我不太熟悉术语,请耐心等待)权限有关,也许只允许根目录
首先在实时服务上创建一个脚本并包含此代码以了解名称是什么 将执行 php 的 move_uploaded_file 命令的客户端
<?php
echo exec('whoami');
?>
然后结果给我“apache”作为我客户的用户 查找文件夹后,目标检查客户端是否可写 使用
ls -lh /var/www/文件夹/
然后你会看到像 root 和 www 就在上面 改为
chown -R apache:apache /文件夹目标
始终注意用户是 whoami php 脚本的结果
希望这有帮助
我遇到了同样的问题,对我有用的是:
move_uploaded_file($_FILES['files']['tmp_name'][$i], $dirWithinDocumentRoot);
我将文件移至/tmp目录:
move_uploaded_file($_FILES['files']['tmp_name'][$i], '/tmp/' . $_FILES['files']['name'][$i]);