Php 上载文件时禁止使用Apache 403

Php 上载文件时禁止使用Apache 403,php,apache,upload,http-status-code-403,Php,Apache,Upload,Http Status Code 403,当我提交带有输入文件的多部分/表单数据表单时,我遇到了一个奇怪的apache错误。似乎只有当我上传70kb或更大的文件时才会发生这种情况 以下是我的php.ini设置: file_uploads = On upload_max_filesize = 10M max_execution_time = 90 max_input_time = 90 memory_limit = 196M post_max_size = 10M 下面是test.php中的HTML: <form action="

当我提交带有输入文件的多部分/表单数据表单时,我遇到了一个奇怪的apache错误。似乎只有当我上传70kb或更大的文件时才会发生这种情况

以下是我的php.ini设置:

file_uploads = On
upload_max_filesize = 10M
max_execution_time = 90
max_input_time = 90
memory_limit = 196M
post_max_size = 10M
下面是test.php中的HTML:

<form action=""  method="POST" enctype="multipart/form-data">
    <input type="file" name="pdfMagazine" />
    <input type="submit" value="Save" name="saveMagazine" />
</form>
以下是有关环境的更多详细信息:

  • Apache没有安装mod_security,没有限制文件上传的
    .htaccess
  • 日志仅指出存在403代码
  • 我尝试的test.php权限是755和644
  • 如果没有上传文件,则表单提交罚款
有人能帮我吗

提前谢谢

[更新]

服务器似乎安装了mod_security,以下是apache原始日志:

[Wed Jun 12 19:48:01 2013] [error] [client x.x.x.x] mod_security: Access denied with code 403. read_post_payload: Failed to create file "/root/tmp/20130612-194801-190.115.8.74-request_body-deJpho" because 13("Permission denied") [severity "EMERGENCY"] [hostname "myserver.com"] [uri "/test.php"]
[Wed Jun 12 19:48:01 2013] [error] [client x.x.x.x] mod_security: sec_filter_in: Failed to open file "/root/tmp/20130612-194801-190.115.8.74-request_body-deJpho" [hostname "myserver.com"] [uri "/403.shtml"]
通过研究,我发现:

**Upload tmpdir issues**

Seeing this?

<source lang='php'> [Fri Nov 18 14:49:50 2011] [error] [client 72.52.142.215] mod_security: Access denied with code 406. read_post_payload: Failed to create file "/root/tmp/20111118-144950-72.52.142.215-request_body-xGPNPd" because 13("Permission denied") [severity "EMERGENCY"] [hostname "lakedonpedro.org"] [uri "/wp-cron.php?doing_wp_cron"] [unique_id "TsbhJkg0jtcAACYIFDk"] </source>

This actually happens because PHP's being set to use /root/tmp and the upload tmp dir. Let's set a few things then! Yay!

Make sure these are all set in /usr/local/lib/php.ini (session.save_path will probably already be set)
upload_tmp_dir = /tmp
session.save_path = /tmp

Make sure these are all set in /usr/local/apache/conf/modsec2.user.conf (or the applicable file for your system)
SecUploadDir /tmp
SecTmpDir /tmp

Restart the apachies.
It also seems it has worked adding the above to modsec.conf corrects this issue. per ~awilson

这通常会关闭mod_安全过滤器。

默认情况下,Apaches模块mod_安全有60kb的上载限制,因此任何较大的上载都会抛出403错误代码

由于modsec.conf仅可由服务器提供程序编辑,因此我向每个root.htaccess添加以下行:

SecFilterEngine Off
SecFilterEngine Off

这通常会关闭mod_安全过滤器

默认情况下,Apaches module mod_security的上传限制为60kb,因此任何较大的上传都会抛出403错误代码

由于modsec.conf仅可由服务器提供程序编辑,因此我向每个root.htaccess添加以下行:

SecFilterEngine Off
SecFilterEngine Off

这通常会关闭mod_安全过滤器

在/var/www文件夹和test.php的所有父文件夹上执行ls-ltr。将该信息放在/var/www文件夹和test.php的所有父文件夹的questiondo ls-ltr中。将该信息放在问题中注意“[s]对.htaccess文件的支持在2.x中被中断,因为它引发了太多的安全问题”()并且“如果不允许关闭SecFilterEngine,这可能会导致错误500(内部服务器错误)”()。注意“[s]对.htaccess文件的支持在2.x中已停止,因为它引发了太多安全问题“(),“如果不允许关闭SecFilterEngine,则可能导致错误500(内部服务器错误)”()。