[英]Multiple php-fpm versions on LAMP Server
(在本教程中,然后在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個目錄,一個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 Server已安裝了php5.6-fpm
和php7.0-fpm
但現在出現了我的第一個問題。
當我在網絡瀏覽器中打開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相同)時,它向我顯示了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(正在運行),所以我php7.0-fpm
幫助自己,需要幫助。
因此,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
現在一切正常。
謝謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.