【发布时间】:2012-03-05 13:01:56
【问题描述】:
我有一个简单的上传表单,这里是开始和结束标签:
<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"]
我已经搜索了代码,在任何地方都没有提到root 或upload_tmp_dir。所有代码文件都属于应用程序用户和组。在php.ini 中,upload_tmp_dir 最初没有设置,我现在将其设置为/tmp,但这也没有解决问题。
知道它为什么要上传到/root/tmp吗?
【问题讨论】:
-
在php.ini中设置正确的路径,然后重启appache。
-
你的 path.ini 文件是指相对路径还是绝对路径?你的 apache 是由
root运行的吗? -
@Tim:它设置为
/tmp- 这是绝对的,对吗?此外,apache 以nobody用户身份运行。 -
您是否尝试在处理上传之前仔细检查该值?
var_dump(ini_get('upload_tmp_dir'));Looks like 全局 php.ini 是唯一可以设置该值的地方。 -
@quickshiftin
string(5) "/tmp/"
标签: php apache configuration upload