(随着教程,之后在Thomas Christlieb的帮助下)
现在使用的配置如下:
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 Server + 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
中创建了2个文件,一个php56.conf
,一个php70.conf
/var/www/html
中创建了2个directorys,一个PHP 5.6,一个PHP 7.0 sudo 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和&amp; PHP 7.0目录我创建了一个文件info.php
<?php phpinfo() ?>
sudo service apache2 restart
(重新加载已更改的配置)
现在,LAMP服务器安装了php5.6-fpm
&amp; php7.0-fpm
但现在我的第一个问题出现了。
当我在Web浏览器中打开PHP 7.0站点时,它向我显示正确的phpinfo()
,它告诉我:
PHP Version 7.0.27-1 + ubuntu16.04.1 + deb.sury.org + 1 服务器API FPM / FastCGI 加载配置文件/etc/php/7.0/fpm/php.ini ...
但是当我在网络浏览器中打开PHP 5.6网站时,它会向我显示完全相同的phpinfo()
输出。
所以我尝试禁用PHP 7.0站点来检查我的PHP 5.6配置是否可能已损坏。
sudo a2dissite php70
sudo service apache2 reload
现在,当我打开PHP 5.6(PHP 7.0相同)时,它向我展示了PHP版本5.6的phpinfo
,如下所示:
PHP Version 5.6.33-3 + ubuntu16.04.1 + deb.sury.org + 1 服务器API FPM / FastCGI 加载配置文件/etc/php/5.6/fpm/php.ini ...
从那时起,我向Thomas Christlieb寻求帮助,并按照他的指示做了以下内容:
a2dissite php56 php70
(禁用两个站点配置文件)a2ensite 000-default
(再次启用默认配置文件)对&#39; /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
(重新加载新配置)
所以,但是现在当我打开这两个网站时,我得到完全相同的错误消息&#39;内部服务器错误&#39;,但这两个消息是不同的字体, 我想这可能意味着它应该像这样工作,因为否则他们应该完全相同,或者我错了?
我搜索了很多,也在这里查了一下,但这个问题并没有真正存在,因为我在配置中不使用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个有效(正在运行),所以我不能再帮助自己了,需要帮助。
答案 0 :(得分:0)
所以不再需要答案,Thomas Christlieb现在找到了问题。
在我的000-default.conf中,FastCgiExternalServer里面的路径错误。
他将/run/php5.6-fpm.sock更改为/run/php/php5.6-fpm.sock
和/run/php7.0-fpm.sock到/run/php/php7.0-fpm.sock
现在一切正常,但应该如此。
感谢。