(有教程,之后有托马斯·克里斯特利布的帮助)
现在使用的配置如下:
System runs on an "old" HP EliteBook,
which should run as test server before going live + backup server
SystemOS : Linux Mint 18.3 (based on Ubuntu 16.04)
Access to Site via Windows PC in same Network
要安装LAMP服务器+fpm模块,我遵循以下步骤:
sudo apt-get install apache2 apache2-utils mysql-server phpmyadmin
sudo a2dismod php7.2 (which was installed with phpmyadmin)
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install libapache2-mod-fastcgi libapache2-mod-fcgid
sudo apt-get install php5.6-fpm php5.6 php5.6-mcrypt php5.6-mbstring php5.6-mysql php5.6-zip php5.6-gd php5.6-xml
sudo apt-get install php7.0-fpm php7.0 php7.0-mcrypt php7.0-mbstring php7.0-mysql php7.0-zip php7.0-gd php7.0-xml
sudo a2enmod actions
sudo a2enmod fastcgi
sudo a2enmod fcgid
sudo a2enmod rewrite
sudo a2enmod suexec
sudo a2enmod include
(a2enmod只是检查它们是否已经启用)sudo service apache2 restart
(重新启动服务器以便正确加载所有内容)在
/etc/apache2/sites-available
中创建了两个文件,一个php56.conf
,一个php70.conf
在
/var/www/html
中创建了两个目录,一个PHP 5.6,一个PHP 7.0sudo a2dissite 000-default
(禁用默认站点)sudo a2ensite php56 php70
(启用PHP 5.6和PHP 7.0站点)sudo service apache2 restart
/etc/apache2/sites available/php56.conf:
<IfModule mod_fastcgi.c>
AddHandler php56-fcgi-www .php
Action php56-fcgi-www /php56-fcgi-www
Alias /php56-fcgi-www /usr/lib/cgi-bin/php56-fcgi-www
FastCgiExternalServer /usr/lib/cgi-bin/php56-fcgi-www -socket /run/php/php5.6-fpm.sock -pass-header Authorization
<Directory "usr/lib/cgi-bin">
Require all granted
</Directory>
</IfModule>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName php56
DocumentRoot /var/www/html/php56
<Directory "/var/www/html/php56">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
SetHandler php56-fcgi-www
</Directory>
ErrorLog $(APACHE_LOG_DIR)/error.log
CustomLog $(APACHE_LOG_DIR)/access.log combined
</VirtualHost>
/etc/apache2/sites available/php70.conf:
<IfModule mod_fastcgi.c>
AddHandler php70-fcgi-www .php
Action php70-fcgi-www /php70-fcgi-www
Alias /php70-fcgi-www /usr/lib/cgi-bin/php70-fcgi-www
FastCgiExternalServer /usr/lib/cgi-bin/php70-fcgi-www -socket /run/php/php7.0-fpm.sock -pass-header Authorization
<Directory "usr/lib/cgi-bin">
Require all granted
</Directory>
</IfModule>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName php70
DocumentRoot /var/www/html/php70
<Directory "/var/www/html/php70">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
SetHandler php70-fcgi-www
</Directory>
ErrorLog $(APACHE_LOG_DIR)/error.log
CustomLog $(APACHE_LOG_DIR)/access.log combined
</VirtualHost>
在PHP 5.6和PHP 7.0目录中,我创建了一个文件
info.php
<?php phpinfo() ?>
sudo service apache2 restart
(重新加载更改的配置)所以现在LAMP服务器安装了
php5.6-fpm
&php7.0-fpm
但是现在我的第一个问题出现了。当我在Web浏览器中打开PHP 7.0站点时,它会显示正确的
phpinfo()
,它告诉我:PHP版本7.0.27-1+ubuntu16.04.1+deb.sury.org+1
服务器API FPM/FastCGI
已加载配置文件/etc/php/7.0/fpm/php.ini。。。
但当我在web浏览器中打开PHP 5.6站点时,它会显示完全相同的
phpinfo()
输出。所以我尝试禁用PHP 7.0站点来检查我的PHP 5.6配置是否损坏。
sudo a2dissite php70
sudo service apache2 reload
现在,当我打开PHP 5.6(与PHP 7.0相同)时,它显示了php5.6版本的
phpinfo
,如下所示:PHP版本5.6.33-3+ubuntu16.04.1+deb.sury.org+1
服务器API FPM/FastCGI
已加载配置文件/etc/php/5.6/fpm/php.ini。。。
从那时起,我向托马斯·克里斯利布寻求帮助,并按照他的指示,我做了如下工作:
a2dissite php56 php70
(禁用两个站点配置文件)a2ensite 000-default
(再次启用默认配置文件)对“/etc/apache2/sites available/000 default.conf”进行了以下修改
<IfModule mod_fastcgi.c>
AddHandler php56-fcgi-www .php
Action php56-fcgi-www /php56-fcgi-www
Alias /php56-fcgi-www /usr/lib/cgi-bin/php56-fcgi-www
FastCgiExternalServer /usr/lib/cgi-bin/php56-fcgi-www -socket /run/php5.6-fpm.sock -pass-header Authorization
<Directory "/usr/lib/cgi-bin">
Require all granted
</Directory>
AddHandler php70-fcgi-www .php
Action php70-fcgi-www /php70-fcgi-www
Alias /php70-fcgi-www /usr/lib/cgi-bin/php70-fcgi-www
FastCgiExternalServer /usr/lib/cgi-bin/php70-fcgi-www -socket /run/php7.0-fpm.sock -pass-header Authorization
<Directory "/usr/lib/cgi-bin">
Require all granted
</Directory>
</IfModule>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory "/var/www/html/php70">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
SetHandler php70-fcgi-www
</Directory>
<Directory "/var/www/html/php56">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
SetHandler php56-fcgi-www
</Directory>
</VirtualHost>
sudo service apache2 restart
(重新加载新配置)所以现在当我打开两个站点时,我得到了完全相同的错误消息“Internal Server error”,但是这两个消息的字体不同,
我想这可能意味着它应该这样工作,否则它们应该完全相同,或者我错了?
我经常在网上搜索,也在这里查找,但这个问题并不是真的存在,因为我的配置中没有使用docker或Nginx。
也许有人已经遇到了这样的问题,可以告诉我如何解决我错过的最后一步。
Access.log信息
...
100.100.100.11 - - [20/Feb/2018:08:26:14 +0100] "GET /php56/info.php HTTP/1.1" 500 805 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0"
100.100.100.11 - - [20/Feb/2018:08:37:35 +0100] "GET /php56/info.php HTTP/1.1" 500 805 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0"
...
Error.log信息
...
[Tue Feb 20 09:30:08.166199 2018] [fastcgi:error] [pid 27475] (2)No such file or directory: [client 100.100.100.11:52772] FastCGI: failed to connect to server "/usr/lib/cgi-bin/php56-fcgi-www": connect() failed
[Tue Feb 20 09:30:08.166574 2018] [fastcgi:error] [pid 27475] [client 100.100.100.11:52772] FastCGI: incomplete headers (0 bytes) received from server "/usr/lib/cgi-bin/php56-fcgi-www"
...
这是我在浏览
Error.log
时注意到的,但我不知道为什么它会这么说。我检查了
php5.6-fpm
,php7.0-fpm
,apache2
的状态,它们都是3个活动的(正在运行),所以我无法再控制自己,需要帮助。 最佳答案
所以不需要回答了,托马斯克里斯利布现在发现了问题。
在FastCgiExternalServer的000-default.conf文件中,我的内部路径错误。
他将/run/php5.6-fpm.sock改为/run/php/php5.6-fpm.sock
和/run/php7.0-fpm.sock到/run/php/php7.0-fpm.sock
现在一切都正常了。
谢谢。
关于php - LAMP服务器上的多个php-fpm版本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48885230/