我正在尝试在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);
}
此代码在上失败如果(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 但是stll上传失败。
请帮忙。相同的PHP上传代码适用于其他共享主机提供商。这个php文件被Jquery Ajax调用。
答案 0 :(得分:0)
我认为问题是$ 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))) {
在所有其他代码中,您必须更改此内容!
答案 1 :(得分:0)
你好,我最近遇到的每个人都是我,我也是一个初学者,在短短3个小时内就解决了这个问题,这对我有帮助。我使用Linux AMI EC2实例。
问题可能全与文件夹的“可写性”有关(对不起,我不太熟悉这些术语,请多多包涵)文件夹的许可,也许只允许用于根目录
首先在实时服务中制作一个脚本,并包含以下代码以了解名称 将执行php的move_uploaded_file命令的客户端
<?php
echo exec('whoami');
?>
然后结果是给我“ apache”作为客户的用户 在寻找文件夹之后,目的地检查它是否可以被客户端写入。 使用
ls -lh / var / www / folder /
然后您会看到 根和www就可以了 更改为
chown -R apache:apache /文件夹目标
请始终注意,用户是whoami php脚本的结果
希望这会有所帮助