需求
fedora26下使用yum安裝好apache2.4 和 php7.0後,需要添加apache2.4對php5.6的支持.
方法
介紹方法前,需要理解一個文件,libphp5.0.so,當php作爲apache的一個模塊運行,隨apache一起啓動時,需要在編譯php時生成此文件,並在apache配置文件中修改配置項,加載這個文件.
因此如果想添加多版本支持,只需通過編譯生成不同版本的libphp動態庫文件,然後在apache配置文件中加載不同版本的庫文件即可.
生成庫文件
可以通過下載php5.6源碼進行編譯安裝,在編譯時添加選項--with-apxs2=用來生成libphp5.0.so, 此選項後應該填寫本機apxs命令的完整路徑(路徑可通過which apxs查看),如果提示"no apxs in",可通過yum安裝httpd-devel得到.
[root@MiWiFi-R3D-srv php56]# yum install httpd-devel
[root@MiWiFi-R3D-srv php56]# which apxs
/usr/bin/apxs
獲取到apxs路徑後,在解壓後的源碼文件夾中進行編譯,安裝即可
[root@MiWiFi-R3D-srv php56]#./configure --prefix=/usr/local/ --with-apxs2=/usr/bin/apxs
[root@MiWiFi-R3D-srv php56]#make
[root@MiWiFi-R3D-srv php56]#make install
安裝成功後,查看apahce模塊文件,如果有文件libphp5.so,即表示成功生成.
[root@MiWiFi-R3D-srv modules]# pwd
/etc/httpd/modules
[root@MiWiFi-R3D-srv modules]# ll -th
總用量 42M
-rwxr-xr-x 1 root root 31M 4月 26 11:35 libphp5.so
-rwxr-xr-x 1 root root 4.3M 2月 28 20:13 libphp7.so
-rwxr-xr-x 1 root root 4.5M 2月 28 20:13 libphp7-zts.so
-rwxr-xr-x 1 root root 250K 11月 7 16:30 mod_http2.so
....
....
查看apache配置文件,確認libphp5.so文件已被apahce加載,默認情況下,編譯php成功後會自動添加,如果沒有,可以手動添加:
LoadModule php5_module /usr/lib64/httpd/modules/libphp5.so
[root@MiWiFi-R3D-srv www]# vim /etc/httpd/conf/httpd.conf
.............
..............
LoadModule php5_module /usr/lib64/httpd/modules/libphp5.so
Include conf.modules.d/*.con
..............
..............
配置當前版本
編輯apache中對應php模塊的配置文件,將原來的<IfModule mod_php7.c>修改爲<IfModule mod_php5.c>即可.
[root@MiWiFi-R3D-srv www]# vim /etc/httpd/conf.d/php.conf
#.....省略大概39行,無需改動......
#行號39
<IfModule mod_php5.c>
#
# Cause the PHP interpreter to handle files with a .php extension.
#
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
#
# Uncomment the following lines to allow PHP to pretty-print .phps
# files as PHP source code:
#
#<FilesMatch \.phps$>
# SetHandler application/x-httpd-php-source
#</FilesMatch>
#
# Apache specific PHP configuration options
# those can be override in each configured vhost
#
php_value session.save_handler "files"
php_value session.save_path "/var/lib/php/session"
php_value soap.wsdl_cache_dir "/var/lib/php/wsdlcache"
#php_value opcache.file_cache "/var/lib/php/opcache"
</IfModule>
#結束
驗證
重啓apache服務,使用phpinfo查看php版本信息;
版本切換
如果想換回php7版本,註釋掉"LoadModule php5_module /usr/lib64/httpd/modules/libphp5.so",並修改<IfModule mod_php5.c>爲<IfModule mod_php7.c>,然後重啓apache服務即可.
[root@MiWiFi-R3D-srv www]# vim /etc/httpd/conf/httpd.conf
.............
..............
#LoadModule php5_module /usr/lib64/httpd/modules/libphp5.so
Include conf.modules.d/*.con
..............
..............
[root@MiWiFi-R3D-srv www]# vim /etc/httpd/conf.d/php.conf
<IfModule mod_php7.c>
#
# Cause the PHP interpreter to handle files with a .php extension.
#
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
#
# Uncomment the following lines to allow PHP to pretty-print .phps
# files as PHP source code:
#
#<FilesMatch \.phps$>
# SetHandler application/x-httpd-php-source
#</FilesMatch>
#
# Apache specific PHP configuration options
# those can be override in each configured vhost
#
php_value session.save_handler "files"
php_value session.save_path "/var/lib/php/session"
php_value soap.wsdl_cache_dir "/var/lib/php/wsdlcache"
#php_value opcache.file_cache "/var/lib/php/opcache"
</IfModule>