Wordpress站点和通过Apache PHP-FPM FastCGI的W3 Total缓存

Wordpress站点和通过Apache PHP-FPM FastCGI的W3 Total缓存,php,wordpress,apache2.2,w3-total-cache,mod-fastcgi,Php,Wordpress,Apache2.2,W3 Total Cache,Mod Fastcgi,我用Wordpress安装了一台Apache服务器,在安装了几个插件后,我注意到页面加载时间达到了30秒或更长,因此我遵循了一些指南,通过删除模块、启用deflate、更改工作进程等来微调和加速Apache 我所做的更改之一是删除mod php并通过mod fastcgi使用phpfpm,之后我注意到几个奇怪的错误。W3 Total Cache报告说,尽管htaccess属于同一用户和组,但它不可写,我甚至将其设置为可写(777个权限),minify无法工作,因为它无法写入对htaccess的任

我用Wordpress安装了一台Apache服务器,在安装了几个插件后,我注意到页面加载时间达到了30秒或更长,因此我遵循了一些指南,通过删除模块、启用deflate、更改工作进程等来微调和加速Apache

我所做的更改之一是删除mod php并通过mod fastcgi使用phpfpm,之后我注意到几个奇怪的错误。W3 Total Cache报告说,尽管htaccess属于同一用户和组,但它不可写,我甚至将其设置为可写(777个权限),minify无法工作,因为它无法写入对htaccess的任何更改

不仅如此,Minify还发出了另外两条奇怪的信息

Minify Auto encountered an error. The filename length value is most likely too high for your host. It is currently 150. The plugin is trying to solve the issue for you
它坐在那里试图修复,然后说

Minify Auto does not work properly. Try using Minify Manual instead or try another Minify cache method. You can also try a lower filename length value manually on settings page by checking "Disable the Minify Auto automatic filename test”
此外,兼容性检查也会产生奇怪的消息,声称一些模块没有被检测到,但这些模块是加载的。我做了一些快速研究,发现这些模块只是很难通过fast gi检测到,但我想知道插件是否在做什么,因为它无法检测到它们

任何帮助都将不胜感激

Apache/PHP-FPM下的W3 Total Cache“Minify Auto” 我在使用PHP-FPM的Apache下使用W3 Total Cache(W3TC)及其“Minify Auto”功能时也遇到了同样的问题

问题简介 在FastCGI模式下调用PHP时,一些CGI变量,如
SCRIPT\u NAME
PATH\u INFO
并不总是设置为脚本开发人员期望的值。在我的例子中,
SCRIPT\u NAME
的值是
php5 fcgi
可执行文件(
/usr/lib/cgi-bin/php5 fcgi
)的路径,而不是PHP脚本本身的路径

W3TC插件中的minify模块代码要求
SCRIPT\u NAME
设置正确,否则将失败

解决方案 php.ini指令,
cgi.fix\u pathinfo
在启用时可解决此“cgi变量”问题。在我的例子中,我禁用了此设置,重新启用它会生成正确的
SCRIPT\u NAME
,并解决了缩小问题

Debian/Ubuntu系统的说明 要重新启用,请更改
/etc/php5/fpm/php.ini
中的设置:

cgi.fix_pathinfo = 1
并重新加载php fpm服务:

sudo service php-fpm reload
警告 注意:2010年以来,在错误配置的Nginx站点中使用
cgi.fix\u pathinfo
设置一直存在安全问题(有关详细信息,请参阅),但我无法在Apache设置下重现这一点

自PHP5.3.9以来,引入了一个(文档不完整的)新的FPM配置指令。默认情况下,它将执行限制为仅执行
.php
文件,就我所知,这将缓解历史安全问题

详细问题(针对关心的人) 断开的CGI变量会导致W3TC函数出现问题,该函数派生缓存目录路径

这进而导致minify
.htaccess
文件被写入磁盘,而
RewriteBase
指令中的缓存路径格式不正确

就我而言,它是:

RewriteBase inify/
而不是:

RewriteBase /wp-content/cache/minify/
这会影响后续的重写规则,最终会阻止缩编代码(依赖于这些规则)被正确调用