我正在对 Hetzner 托管的专用服务器上托管的网站进行一些更改,但我发现不知何故一些.htaccess 中设置的 php 标志将传递给以 fastCGI 形式运行的 PHP。据我所知,需要在 php.ini 中设置 fastCGI/FPM 标志,所以我很困惑,想了解这个诡计是如何运作的。不幸的是,我限制了对服务器的访问,所以我看不到 apache 设置。
例如,该.htaccess
文件具有以下配置(未包装在 IfModule 条件中)。
php_value memory_limit 256M
php_flag log_errors on
php_value error_log /usr/home/shedrub/php_error.log
当我运行 php 页面时,phpinfo()
我得到:
Server API: CGI/FastCGI
Directive Local Value Master Value
memory_limit 96M 96M
log_errors On Off
error_log /[redacted]/php_error.log no value
几个有趣的观点:
- 该
memory_limit
标志未通过或无法通过。 .htaccess
如果我用包装块<IfModule mod_php5.c>
,则值仍会传递给 php 进程。- 如果我更改 .htaccess 中的一个值,则需要几分钟的时间才能在 phpinfo 中显示。我认为这是因为旧进程仍在处理请求。
因此,感觉这就像 apache 模块和 fastCGI 的混合体。您知道这是如何实现的吗?还是我遗漏了有关 fastCGI 在 apache 中的工作原理的某些信息?