PHP要升版很容易,透過remi來升就好了。網路上教學很多。
但我升完用yum搜尋會有兩種檔案,一種是php56開頭的,另一種是php開頭後面是56的。看了一下檔案大小確實有差異,我也懶得去認真研究其差異(猜想後來yum預設的PHP也變成5.6了)。我一開始兩種都有保留,希望php56的可以直接讓apache2.4用(因為它會產出libphp5.so這個檔案)。但弄到最後沒有辦法解決問題,最後還是把php56開頭的都移除了。
接著要處理apache 2.4的問題,rhel可以升,但升完之後不支援PHP。而且路徑名稱我很不喜歡,我也不想用link的方式來解,這個網路上也有一些教學。安裝完成後我試著裝了php56開頭的檔案 但怎麼弄都是以下錯誤:
httpd: Syntax error on line 163 of httpd.conf: Cannot load modules/libphp5.so into server: modules/libphp5.so: undefined symbol: unixd_config
這個是因為apache 2.4之後function name有變的關係。
試了幾天,看來這個方法不行 於是我自己下載了php5來編譯,但結果相同。鼻子摸一摸,連apache 24也自己編譯。(最後發現也許是我在httpd.conf沒有先disable php5 module的關係,但發現時已經太晚了)
我先把apache 2.2及php 56開頭的rpm都移除。(但我沒有移除掉php開頭的檔案),我的計畫是php 56編譯後只用它產出的SO檔給apache用。其它CLI的不動。
接著下載apahce 2.4編譯 (要先編譯安裝apr及apr-util),原先aprapr及apr-util的版本太舊,因此我有將之移除,並以預設值編譯安裝。
apache 2.4的編譯指令如下供參考:
./configure --prefix=/etc/httpd --enable-so --enable-ssl --enable-cgi \
--enable-rewrite --with-zlib --with-pcre \
--with-includedapr=/usr/local/apr/include/apr-1 \
--enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
安裝後再回頭下載php 5.6.40,解壓編譯它,mysql的部份是後來重編的,因為啟用PHP之後發現PHP 不認識它們家三兄弟......
./configure --with-apxs2=/etc/httpd/bin/apxs \
--with-mysql --with-pdo-mysql --with-mysqli --with-libxml-dir --with-gd \
--with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir \
--with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap \
--enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif
重點就是mysqli還有apxs的那一段,你其實也可以在編譯apache2的時讓它用unixd_config,但你都要用新的版本了,何苦再讓它支援舊指令。
完成後把so檔丟到apache的modules目標中。
cp /usr/src/php-5.6.40/libs/libphp5.so /etc/httpd/modules/
再編輯httpd.conf
加入以下兩行:
LoadModule php5_module modules/libphp5.so
IncludeOptional conf.d/*.conf
接著在conf.d目錄中,新增php.confA
其內容是:
Require all denied
Order allow,deny
Deny from all
Satisfy All
AddType text/html .php
DirectoryIndex index.php
SetHandler application/x-httpd-php
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"
最後再重啟apahe就好了。
x
x
沒有留言:
張貼留言