我刚刚在 Debian 9.13 Stretch 上升级了我的 apache2 服务器以开始使用 HTTP/2。就我而言,这需要从 mod_php 切换到 PHP-FPM。
问题是 PHP-FPM 不遵守 .htaccess 中的某些 apache 指令。例如,我一直php_value upload_max_filesize 900M
在上传目录中的 .htaccess 文件中使用,以增加文件大小和其他相关参数,例如max_execution_time
,post_max_size
比使用全局 php.ini 文件更精细。
这些是我已经尝试过的一些替代方案:
- 使用 PHP
ini_set()
方法:post_max_size
并upload_max_filesize
在我的脚本启动之前使用。 - 使用 .user.ini 覆盖文件:不太理想,因为它需要在允许上传内容的每个地方限制 .ini 文件的上传(我可以使用
<Files>
过滤器禁用读取访问,但不能上传)。 - 将 .user.ini 文件重命名
SOME_SCRAMBLED_TEST.ini
并添加 Require all denied 到此类文件:危险,因为在错误位置的单个 phpscandir
可能会泄露我的安全配置。 - 在 php.ini 脚本中更改它:将其作为最后一个选项;我更喜欢有一个相当大的上传大小,而不是允许用户上传一个搞砸我的服务器的 .user.ini 文件。
是否有任何其他替代方法可以使用 HTTP/2 并拥有允许上传的安全服务器?
经过两天的工作,我设法让这个运行。
首先,禁止
.user.ini
在每个目录上读取它的危险默认值:然后,仅对
apache2.conf
位于文件中的所需目录启用它/etc/apache2
(并禁用读取这些目录)。我们可以通过使用SetEnv
目录过滤器来做到这一点:然后,在 中,使用您所需的配置
/path/to/upload/directory
创建一个文件:.user.ini
这样,您可以拥有一个每个目录
.user.ini
,而无需为整个服务器启用它。