【问题标题】:php_flag set in virtual host ignored忽略虚拟主机中设置的 php_flag
【发布时间】:2015-01-01 10:11:30
【问题描述】:

我需要为站点上的一组特定路径将 enable_post_data_reading 设置为 off,但无法使其正常工作。情况如下:

Apache 2.2.22、PHP 5.4.34

尝试使用 in 指令设置标志。

使用了 URL 重写(它是一个 Drupal 站点),因此每个目录的 htaccess 文件将不起作用。

如果我在 php.ini 中将 enable_post_data_reading 设置为“关闭”,则发布数据将按预期处理,并且特定页面可以正常工作,但会破坏站点的其余部分。但是,我至少向自己证明了该设置完全有效。

如果我在指令中设置了一个测试环境变量,它会在预期的页面上可见,因此匹配正确。

但是,如果我在指令中将 enable_post_data_reading 设置为“off”,则会被忽略。

类似地,如果我在 php.ini 中将其设置为“on”,然后在虚拟主机中将其设置为“off”,它会保持打开状态。

看起来,虽然这种结构工作正常:

<VirtualHost 192.169.0.1:80>
   # Virtual host name, docroot, etc.

   <Location /apply/>
      SetEnv foo bar
   </Location>
</VirtualHost>

...如果我这样做:

<VirtualHost 192.169.0.1:80>
   # Virtual host name, docroot, etc.

   <Location /apply/>
      php_flag enable_post_data_reading on
   </Location>
</VirtualHost>

php_flag 指令被忽略。

那么,我做错了什么?有没有其他地方可以设置可以工作的标志?

提前谢谢...

【问题讨论】:

    标签: php apache virtualhost


    【解决方案1】:

    好的,所以我们进行了大量的测试。重写 URL 后,Location 指令似乎无法正常工作,因此未设置 PHP 标志。

    然而,我们发现了一种解决方法:

    • 将虚拟主机的位置指令设置为在文件(例如 /apply.php)而不是路径上触发。
    • 在顶部 Web 目录中创建指向 index.php 的符号链接,使用您用于位置的任何名称。
    • 在将所有内容重定向到 index.php 的标准 Drupal 规则之前,将新的 rewriteRule 添加到 .htaccess 文件中,以便将所有包含您需要受 PHP 标志影响的路径的内容重写到符号链接。李>

    这似乎完全按照我们的需要工作:设置了 PHP 标志,Drupal 正常处理请求。相当间接,但它比任何其他可能的解决方案都要好。

    【讨论】:

      猜你喜欢
      • 2018-02-08
      • 1970-01-01
      • 2014-11-10
      • 2010-10-21
      • 2013-09-26
      • 2019-11-14
      • 2021-09-29
      • 2013-07-16
      • 2013-03-15
      相关资源
      最近更新 更多