我一直在我的网站上运行我的大部分PHP应用程序,在fastcgi后端,由NGINX提供服务.我有一个新的应用程序,似乎很好地与Apache集成; 例如,它严重依赖于动态编写的.htaccess文件.我正在努力修改它以与NGINX本地工作,但还没有准备好.与此同时,我将把NGINX代理连接到该路径直接连接到Apache,并让Apache处理它.
但是,我的内存限制为VPS,我宁愿不为NGINX(带有自己的APC缓存)运行一组PHP-CGI进程,而为Apache运行另一组PHP(使用更多内存用于其 APC缓存).有没有人有幸在两者之间分享PHP?
mod_ fcgid似乎不支持使用已经运行的服务器,所以我尝试了mod_ fastcgi.这似乎最初起作用,但吸收了相当多的内存(承诺 - 它正在增长,而不仅仅是静态).更糟糕的是,我无法在我的apache配置中使用DirectoryIndex行来使用mod_fastcgi!
我补充道
AddHandler php5-fastcgi .php FastCgiExternalServer /var/www -host 127.0.0.1:9000
到我的Apache配置,并处理所有.php页面,但像http://example.com/foo/这样的路径不服务器/foo/index.php!如果我删除FastCgiExternalServer,它确实找到index.php,但当然只是将其显示为文本.
我假设它是因为DirectoryIndex是在FastCgiExternalServer之后处理的,但我不知道如何更改它.
问题解决了.诀窍是使用以下行
FastCGIExternalServer /var/www/fast-cgi-fake-handler -host 127.0.0.1:9000 AddType application/x-httpd-fastphp5 .php Action application/x-httpd-fastphp5 /fast-cgi-fake-handler
Action中的相对路径+ FastCGIExternalServer中的完整路径做到了!