所以Google上已经提供的所有答案,在SO上,甚至在DigitalOcean上,只讨论PHP5.6或更低版本或者Apache2 v2.3或更低版本或者只考虑V14.04或更低版本的Ubuntu,它们都是过时的解决方案在最新的PHP7.0 + Apache2 v.2.4.18上无法使用/给出错误的Ubuntu 16.04服务器设置,其中包含用于DB +对象缓存,后端速度增强和反向代理的redis,memcache和varnish设置的wordpress分别。只是清楚地了解我的设置,这样您就不必继续弄清楚模糊的想法或答案,并为拥有最新/几乎相同设置的人们提供正确的解决方案! :)
因为我使用超级慢的微型AWS实例 - 极简主义页面上的服务器响应时间为1.5s到5.4s!我发现fastcgi在这里是一个真正的黄金,可以加速服务器高达20倍到50倍!但是我无法获得正确的安装解决方案,因为它们已经过时了,而v7.0之后的PHP已经改变了我们需要存储数据和配置的文件夹和文件的所有内容。
所以,我遵循了这个Stack Overflow问题https://askubuntu.com/questions/378734/how-to-configure-apache-to-run-php-as-fastcgi-on-ubuntu-12-04-via-terminal并遵循Evan Mattson和Nazq提供的解决方案(第三个也是最后一个答案),用php7.0替换所有内容并移除php5.6但是Evan在他的回答中提到:
现在在文档root / var / www / html中创建以下PHP文件:
sudo nano /var/www/html/info.php
添加:
<?php phpinfo(); ?>
save&amp;退出。
现在我们在浏览器中调用该文件(例如 http://your-server-ip/info.php)
在顶部的Server API下,您应该看到FPM / FastCGI。
成功!
我没有看到它!我在info.php文件的Server API块中得到了通常的默认 Apache 2.0 Handler ,这意味着这里有问题。
建议要求:
使用
修改/etc/apache2/conf-available/php5-fpm.conf
<IfModule mod_fastcgi.c> AddHandler php5-fcgi .php Action php5-fcgi /php5-fcgi Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization -idle-timeout 3600 <Directory /usr/lib/cgi-bin> Require all granted </Directory> </IfModule>
然后执行:
#sudo a2enconf php5-fpm
#sudo apache2 restart
替换它们用于PHP7.0以下是我对这些步骤的说明:
我编辑了/etc/apache2/conf-enabled/php7.0-fpm.conf
和/etc/apache2/conf-available/php7.0-fpm.conf
同时:<IfModule mod_fastcgi.c> AddHandler php7.0-fcgi .php Action php7.0-fcgi /php7.0-fcgi Alias /php7.0-fcgi /usr/lib/cgi-bin/php7.0-fcgi FastCgiExternalServer /usr/lib/cgi-bin/php7.0-fcgi -socket /var/run/php7.0-fpm.sock -pass-header Authorization -idle-timeout 3600 <Directory /usr/lib/cgi-bin> Require all granted </Directory> </IfModule>
现在,这两个文件看起来完全相同(相同):# Redirect to local php-fpm if mod_php is not available <IfModule !mod_php7.c> <IfModule proxy_fcgi_module> # Enable http authorization headers <IfModule setenvif_module> SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1 </IfModule> <FilesMatch ".+\.ph(p[3457]?|t|tml)$"> SetHandler "proxy:unix:/run/php/php7.0-fpm.sock|fcgi://localhost" </FilesMatch> <FilesMatch ".+\.phps$"> # Deny access to raw php sources by default # To re-enable it's recommended to enable access to the files # only in specific virtual host or directory Require all denied </FilesMatch> # Deny access to files without filename (e.g. '.php') <FilesMatch "^\.ph(p[3457]?|t|tml|ps)$"> Require all denied </FilesMatch> </IfModule> </IfModule> <IfModule mod_fastcgi.c> AddHandler php7.0-fcgi .php Action php7.0-fcgi /php7.0-fcgi Alias /php7.0-fcgi /usr/lib/cgi-bin/php7.0-fcgi FastCgiExternalServer /usr/lib/cgi-bin/php7.0-fcgi -socket /var/run/php7.0-fpm.sock -pass-header Authorization -idle-timeout 3600 <Directory /usr/lib/cgi-bin> Require all granted </Directory> </IfModule>
然后我执行
#sudo a2enconf php7.0-fpm
( - &gt;替换)
和#sudo service apache2 restart #sudo systemctl restart apache2
我在浏览器中调用该文件(例如http://your-server-ip/info.php)
在顶部的Server API下,您应该看到FPM / FastCGI。 但我仍然看到:
Apache 2.0 Handler
文件的Server API
块中的常见默认info.php
,这意味着此处出现问题。
请帮忙!我坚持这么久了! PS:请提供您发现正确/正常的解决方案,因为这是我的生产网站,实验可能会导致某些事情破裂,欢迎提出建议,但请不要选择不可逆转的 / < STRONG>灾害!谢谢!