【发布时间】:2018-02-20 12:23:20
【问题描述】:
(在教程之后,在 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 phpmyadminsudo a2dismod php7.2 (which was installed with phpmyadmin)sudo add-apt-repository ppa:ondrej/phpsudo apt-get update && sudo apt-get upgradesudo apt-get install libapache2-mod-fastcgi libapache2-mod-fcgidsudo 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-xmlsudo 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-xmlsudo a2enmod actionssudo a2enmod fastcgisudo a2enmod fcgidsudo a2enmod rewritesudo a2enmod suexec-
sudo a2enmod include(a2enmod 只是为了检查它们是否已经启用) -
sudo service apache2 restart(重新启动服务器,以便正确加载所有内容) - 在
/etc/apache2/sites-available中创建了2个文件,一个php56.conf,一个php70.conf - 在
/var/www/html中创建了 2 个目录,一个 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 和 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 ...
但是当我在网络浏览器中打开 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 版本 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(再次启用默认配置文件) -
对'/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(重新加载新配置)
但是现在当我打开两个站点时,我得到完全相同的错误消息“内部服务器错误”,但这两个消息的字体不同, 我想这可能意味着它应该像这样工作,因为否则它们应该完全相同,还是我错了?
我在谷歌上搜索了很多,也在这里查找,但这个问题并没有真正存在,因为我没有在我的配置中使用 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 活动(正在运行),所以我无法再帮助自己,需要帮助。
【问题讨论】:
标签: php linux apache2 linux-mint