如何使用 AllowOverride 指令来允许 .htaccess 文件覆盖 php_value (Apache2)
Posted
技术标签:
【中文标题】如何使用 AllowOverride 指令来允许 .htaccess 文件覆盖 php_value (Apache2)【英文标题】:How do I use the AllowOverride directive to permit .htaccess files to override php_value (Apache2) 【发布时间】:2021-09-21 16:34:54 【问题描述】:我想在每个<VirtualHost>
的基础上,使用每个主机.htaccess 文件设置三个不同的php_value
参数的值。大概为了做到这一点,我需要在每个 <VirtualHost>
配置中放置一个 AllowOverride
指令,以允许覆盖这些值;我不想简单地使用AllowOverride All
,因为这似乎过于宽容而且有点矫枉过正。
问题似乎是php_value
不是Apache2指令,也不是memory_limit
、max_upload_filesize
和max_post_size
等具体值的名称;然而 AllowOverride
似乎只接受 Apache2 指令的一个子集作为它的参数,以及像 All
、Option
等的东西。
谁能指出我正确的方向?我知道我可以简单地使用 php.ini 或在 <VirtualHost>
配置本身中包含 php_value
定义,但我真的很想先通过 .htaccess 文件了解它是如何完成的。
【问题讨论】:
【参考方案1】:根据"How to change configuration settings" documentation,需要AllowOverride Options
才能使用php_value
指令。这当然隐含在AllowOverride All
中。您不要使用 php_value
作为 AllowOverride 的参数,php_value
是 mod_php 提供的指令,如果您无法使用它,您可能没有将 PHP 作为 Apache 模块运行。如果是这样,那么您需要在每个站点上使用 other methods of customizing the configuration。
文档中的配置示例是一个很好的起点。第一步是验证您正在运行 mod_php。之后,如果您为虚拟主机适当地设置了AllowOverrides
,您应该能够简单地将php_value
声明添加到您的.htaccess 文件中。例如,我刚刚测试了将这一行添加到 .htaccess 文件中:
php_value arg_separator.input &|,
结果:
【讨论】:
谢谢,我确认php7_module
已加载并且您的解决方案运行良好。我实际上不会继续为此目的使用 .htaccess 文件,但我很高兴我发现了它的工作原理!以上是关于如何使用 AllowOverride 指令来允许 .htaccess 文件覆盖 php_value (Apache2)的主要内容,如果未能解决你的问题,请参考以下文章