gpt4 book ai didi

php - 文件被临时上传到/root/tmp 而不是/tmp

转载 作者:行者123 更新时间:2023-12-04 05:58:01 27 4
gpt4 key购买 nike

我有一个简单的上传表单,这里是开始和结束标签:

<form action="post.php" method="post" enctype="multipart/form-data">
</form>

我在提交时收到 500 内部服务器错误。并且 apache 日志显示以下条目(主机名和 ip 已编辑):
[Tue Feb 14 00:08:32 2012] [error] [client xxx.xxx.xxx.xxx] ModSecurity: Input filter: Failed to create temporary file: /root/tmp/20120214-000832-TznsTkPj2kkAAE5LYREAAAAB-request_body-xqZDkt [hostname "xxxxxxxxxx.com"] [uri "/app/221/product/post.php"] [unique_id "TznsTkPj2kkAAE5LYREAAAAB"]
[Tue Feb 14 00:08:37 2012] [error] [client xxx.xxx.xxx.xxx] ModSecurity: Input filter: Failed to delete temporary file: /root/tmp/20120214-000832-TznsTkPj2kkAAE5LYREAAAAB-request_body-xqZDkt [hostname "xxxxxxxxxx.com"] [uri "/app/221/product/post.php"] [unique_id "TznsTkPj2kkAAE5LYREAAAAB"]

我搜索了代码,没有提到 rootupload_tmp_dir任何地方。所有代码文件都属于应用程序用户和组。在 php.ini , upload_tmp_dir最初未设置,我现在已将其设置为 /tmp但这也没有解决问题。

知道为什么要上传到 /root/tmp ?

最佳答案

看来您应该检查一下您的 ModSecurity settings ,尤其是 SecUploadDir 环境。

File upload support

ModSecurity is capable of intercepting files uploaded through POST requests and multipart/form-data encoding or (as of 1.9) through PUT requests.



由于在 PHP 中只有一个地方可以设置该值,并且它在运行时已经过验证,而且我们知道您从日志输出中运行了 ModSecurity,看起来可能就是这样。

每个 OP 的注释:

If you don't set the SecUploadDir parameter, ModSecurity does not ignore it. So we made the following changes: SecUploadDir /tmp SecTmpDir /tmp and now it works perfectly.



我偶然发现的另一件事是,您可以在这种情况下尝试完全禁用 mod 安全性,以查看是否可以消除问题。然后您可以快速将问题缩小到 mod 安全性:

https://serverfault.com/questions/57210/disable-modsecurity-for-a-specific-directory

关于php - 文件被临时上传到/root/tmp 而不是/tmp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9272178/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com