我用Wordpress设置了一台Apache服务器,在安装了几个插件后,我注意到页面加载时间达到了30秒或更长,所以我遵循了几个指南,通过删除模块、启用放气、更改工作进程等来微调和加速Apache。
我做的更改之一是删除mod-php并通过mod-fastcgi使用php-fpm,之后我注意到了几个奇怪的错误。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检测到,但我想知道插件是否在做任何事情,因为它检测不到它们。
任何帮助都将不胜感激
发布于 2014-10-01 15:03:45
Apache/PHP-FPM下的W3总缓存“自动缩小”
我在使用PHP (W3TC)及其在W3下的“Minify Auto”特性时也遇到了同样的问题。
问题简介
在FastCGI模式下调用PHP时,某些CGI变量(如SCRIPT_NAME
和PATH_INFO
)并不总是设置为脚本开发人员期望的值。在我的例子中,SCRIPT_NAME
的值是php5-fcgi
可执行文件(/usr/lib/cgi-bin/php5-fcgi
)的路径,而不是PHP脚本本身的路径。
W3TC插件中的最小化模块代码期望正确设置SCRIPT_NAME
,但当设置不正确时,它会失败。
解决方案
启用时,CGI指令cgi.fix_pathinfo
可解决此“CGI变量”问题。在我的例子中,我禁用了这个设置,重新启用它会导致生成正确的SCRIPT_NAME
并解决缩小问题。
Debian/Ubuntu系统说明
要重新启用,请更改/etc/php5/fpm/php.ini
中的设置
cgi.fix_pathinfo = 1
并重新加载php-fpm服务:
sudo service php-fpm reload
注意事项
注意,在错误配置的Nginx站点中使用cgi.fix_pathinfo
设置的安全问题可以追溯到2010年(详细信息请参阅here ),但是我无法在Apache设置下重现此问题。
从PHP5.3.9开始,一个(文档很少的)新的FPM配置指令security.limit_extensions
被引入。默认情况下,这将仅限于执行.php
文件,据我所知,这应该会缓解历史上的安全问题。
详细的问题(对于那些关心的人)
损坏的CGI变量会导致派生缓存目录路径的W3TC函数出现问题。
这反过来会导致在RewriteBase
指令中使用格式错误的缓存路径将minify .htaccess
文件写入磁盘。
在我的例子中,它是:
RewriteBase inify/
而不是:
RewriteBase /wp-content/cache/minify/
这会影响后续的重写规则,最终会阻止精简代码(依赖于这些规则)被正确调用。
https://stackoverflow.com/questions/25705570
复制相似问题