【发布时间】:2023-04-02 09:16:01
【问题描述】:
我不明白为什么这不起作用。这应该很容易。
上传.php:
$uploaddir = '/usr/share/nginx/www/pitfax/upload/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo "<p>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
}
else {
echo "Upload failed";
}
echo "</p>";
echo '<pre>';
echo 'Here is some more debugging info:';
print_r($_FILES); print "</pre>";
表单页面:
<form enctype="multipart/form-data" action="upload.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="10000000" />
Send this file: <input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>
错误输出是:
Upload failed
Here is some more debugging info:Array (
[userfile] => Array
(
[name] => test.pdf
[type] => application/pdf
[tmp_name] => /tmp/phptM0p4w
[error] => 0
[size] => 1287464
)
)
- 网络服务器:NginX
-
upload.php的权限:644 -
upload目录的权限:755 - 以 root 用户在 SSH 中工作。
- 编辑: upload_max_filesize = 2M
- 编辑: post_max_size = 8M
另一件事!上传完成后,我想获取上传文件的绝对路径。 (例如:/usr/share/nginx/www/pitfax/upload/test.pdf)
【问题讨论】:
-
你试过设置上传目录为777吗?
-
@LukePittman 是的,它没有用。
-
@zerkms 你指的是什么错误日志?
-
你确定 basename() 没有影响它吗?在您的调试输出中,也许您可以
echo $uploadfile;并仔细检查它不只是尝试作为目录上传。 -
$uploadfile怎么可能只有upload/test.pdf?那里应该有一条完整的路径!如果脚本执行的地方没有上传目录,说明move_uploaded_file失败。
标签: php file upload permissions