關於給apache新增PHP擴充套件的方法

czxin788發表於2016-10-26

關於給apache新增PHP擴充套件的方法

 

近期,php官方報出php所有版本都有漏洞,我們的官網也存在該漏洞,於是我用了好幾天的時間,才弄明白php更新的方法。

 

我們官網php的版本是5.3.3,於是我將其更新到了最新版本5.6.9

 

今天寫此文,是為了記錄我這次安裝php的方法,以便搜尋到此文的人給予參考。

 

php 官方下載地址

 

 

php的安裝方法

 

cd /root/soft/php-5.6.9

 ./configure --prefix=/usr/local/php5 --enable-mbstring --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/usr/local/php5 --with-mysql=/usr/local/mysql/

注意,php mysql這個擴充套件包一定要裝,否則你透過apache訪問的web頁面是空白頁。

 

如果報configure: error: xml2-config not found. Please check your libxml2 installation.

 

yum install libxml2  libxml2-devel -y來解決

 

make

 

make install

 

建立php的配置檔案 php.ini

 

cp  /usr/loacl/php-5.6.9/php.ini-dist   /usr/local/php5/php.ini

 

apache能解釋php語言編寫的網頁檔案

 

vim /usr/local/apache2/conf/httpd.conf

 

LoadModule php5_module        modules/libphp5.so

                            

AddType application/x-compress .Z

 

AddType application/x-gzip .gz .tgz

 

AddType application/x-httpd-php  .php

 

DirectoryIndex index.php index.html

 

 

 

重啟web服務讓上面的設定生效

 

cd /usr/local/apache2/bin

./apachectl stop

 

./apachectl start

 

 

編寫 php 測試檔案

 

cat ../htdocs/a.php

 


<!--?php

phpinfo();

?>



 

 

訪問web服務上的.php頁面

 

[root@www bin]# elinks  --dump http://192.168.18.210/a.php

 顯示php資訊為正常

 

[root@www bin]# elinks  --dump http://192.168.18.210

 

測試php連線mysql伺服器

 

elinks  --dump http://192.168.18.210/reg.php

 

 

cat reg.php

 

<!--?php

 

$links=mysql_connect("localhost","root","");

 

if($links){

 

  echo "link db ok!!!";

}

 

else{

 

  echo "link db no!!!";

}

 

?>

 

 

檢視載入了哪些模組(擴充套件):

[root@hnagpsrvbj01 bin]# /usr/local/php5/bin/php -m

[PHP Modules]

Core

ctype

date

dom

ereg

fileinfo

filter

hash

iconv

json

libxml

mbstring

pcre

PDO

pdo_sqlite

Phar

posix

Reflection

session

SimpleXML

SPL

sqlite3

standard

tokenizer

xml

xmlreader

xmlwriter

 

[Zend Modules]

 

 

檢視php版本

/usr/local/php5/bin/php –v

 

手工新增php擴充套件

根據生產系統php –m擴充套件的對比,手工新增新版本php的擴充套件。

###################

1、安裝php soap擴充套件

 

Linux下安裝soap模組

安裝完php後最好保留當時安裝的檔案,比如/usr/local/php-5.3.2

檢視soap模組是否安裝的辦法:在php的安裝目錄下執行php -m來檢視

 

如:/usr/local/php/bin/php -m |grep soap

如果沒有安裝,則進入php的安裝原始檔夾

cd /root/soft/php-5.6.9/ext/soap/

進入後在此執行phpize命令,生成configur檔案

/usr/local/php5/bin/phpize

 

如果上面報錯Cannot find autoconf,如下解決:yum -y install autoconf

然後再執行上述命令就不會報錯了。

 

檢視資訊是否有出錯,沒有出錯的話執行如下命令:

./configure -with-php-config=/usr/local/php5/bin/php-config -enable-soap

 

然後是安裝編譯

make

最後是安裝

make install

安裝好之後會提示soap.so檔案的儲存路徑

 編譯後的soap.so檔案儲存在了/usr/local/php5/lib/php/extensions/no-debug-non-zts-20131226/目錄下,接著修改php.ini檔案

 手工修改:查詢/usr/local/php5/php.ini中的extension_dir = ./”,預設是註釋掉的

 修改為extension_dir = /usr/local/php5/lib/php/extensions/no-debug-non-zts-20131226/

並在此行後增加如下,然後儲存:

extension = “soap.so”

重新啟動apache,在執行php -m就已經能看到擴充套件的soap模組了。

 如果還要安裝擴充套件別的模組可以以此類推。

 

參考文件:

 

 

#####################

2、下面開始手工編譯bz2擴充套件。

[root@hnagpsrvbj01 bz2]# cd /root/soft/php-5.6.9/ext/bz2

[root@hnagpsrvbj01 bz2]# /usr/local/php5/bin/phpize

Configuring for:

PHP Api Version:         20131106

Zend Module Api No:      20131226

Zend Extension Api No:   220131226

Cannot find autoconf. Please check your autoconf installation and the

$PHP_AUTOCONF environment variable. Then, rerun this script.

 

看到上面報錯了,如下解決:yum -y install autoconf

然後再執行上述命令就不會報錯了。

 

接下來:

[root@hnagpsrvbj01 bz2]# ./configure -with-php-config=/usr/local/php5/bin/php-config

如果報configure: error: Please reinstall the BZip2 distribution 錯誤,那就yum install bzip2

 yum install bzip2-devel 來解決。

小知識:devel是擴充套件的意思。

 

vi /usr/local/php5/php.ini

extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-non-zts-20131226/"

extension = "bz2.so"

 

:wq

 

[root@hnagpsrvbj01 ~]# /usr/local/php5/bin/php -m |grep bz2

bz2

看到上面說明安裝擴充套件bz2成功。

 

##########################

3、安裝odbc擴充套件的方法

cd /root/soft/php-5.6.9/ext/odbc/

/usr/local/php5/bin/phpize

 

./configure --with-php-config=/usr/local/php5/bin/php-config

 

但是我安裝phpodbc模組一直不成功,提示:

checking for Adabas support... cp: cannot stat `/usr/local/lib/odbclib.a': No such file or directory

configure: error: ODBC header file '/usr/local/incl/sqlext.h' not found!

 

試了各種辦法和引數都還是這樣,正好又看到還有一個pdo_odbc模組,就準備用pdo_odbc了:

 

編譯安裝phppdo_odbc模組

 

yum install unixODBC-devel

 

cd /root/soft/php-5.6.9/ext/pdo_odbc

/usr/local/php5/bin/phpize

./configure --with-php-config=/usr/local/php5/bin/php-config    --with-pdo-odbc=unixODBC,/usr

make

make install

 

vi php.ini

加入一行:

 

extension = "pdo_odbc.so"

 

重啟web服務就可以透過phpinfo()看到pdo_odbc模組了。

 

#######################

 

4、安裝擴充套件php ldap

cd /root/soft/php-5.6.9/ext/ldap

/usr/local/php5/bin/phpize

./configure --with-php-config=/usr/local/php5/bin/php-config

如果報錯configure: error: Cannot find ldap.h,用yum -y install openldap  openldap-devel來解決。

如果報configure: error: Cannot find ldap libraries in /usr/lib,提示在/usr/lib 下找不到相關模組,這是因為64位的linux預設把以


上檔案都存在 /usr/lib64 資料夾下。

 

解決方法:

cp -frp /usr/lib64/libldap* /usr/lib/

重新configure即可。

 

make

make install

 

 

 

##########################

5、安裝php curl擴充套件

cd /root/soft/php-5.6.9/ext/curl

 /usr/local/php5/bin/phpize

 ./configure --with-php-config=/usr/local/php5/bin/php-config

如果報如下錯誤:

checking for cURL in default path... not found

configure: error: Please reinstall the libcurl distribution -

easy.h should be in /include/curl/

其實就是curldev包沒有安裝, 解決方案:

# yum -y install curl-devel

make

make install

 

########################

6、安裝gmp擴充套件

[root@hnagpsrvbj01 ext]# cd gmp/

[root@hnagpsrvbj01 gmp]# /usr/local/php5/bin/phpize

[root@hnagpsrvbj01 gmp]# ./configure --with-php-config=/usr/local/php5/bin/php-config

如果報configure: error: Unable to locate gmp.h yum install gmp-devel解決。

make

make install

 

####################

7、安裝readline擴充套件

[root@hnagpsrvbj01 ext]# cd readline/

[root@hnagpsrvbj01 readline]# /usr/local/php5/bin/phpize

Configuring for:

PHP Api Version:         20131106

Zend Module Api No:      20131226

Zend Extension Api No:   220131226

[root@hnagpsrvbj01 readline]# ./configure --with-php-config=/usr/local/php5/bin/php-config

如果報configure: error: Please reinstall libedit - I cannot find readline.h,用yum install readline-devel來解決。

#####################################

 

 

8、新增php mysql擴充套件的方法:

cd /root/soft/php-5.6.9/ext/mysql

/usr/local/php5/bin/phpize

[root@centos-msgw2 mysql]#  ./configure -with-php-config=/usr/local/php5/bin/php-config --with-mysql=/usr/

如果報configure: error: Cannot find MySQL header files under /usr/.

yum -y install mysql-devel 來解決  mysql-devel就是mysql客戶端。

 

如果報如下錯誤,

configure: error: Cannot find libmysqlclient under /usr.

Note that the MySQL client library is not bundled anymore!

PHP預設是去/usr/lib/搜尋,所以沒有找到.

解決辦法就是:

cp /usr/lib64/mysql/* /usr/lib/mysql/

然後進行./configure即可,如果伺服器沒有/usr/lib/mysql/ 目錄,則在/usr/lib/目錄下建立mysql目錄

 

###################################

9 、安裝pdo_mysql擴充套件的方法

cd /root/soft/php-5.6.9/ext/pdo_mysql

/usr/local/php5/bin/phpize

[root@hnagpsrvbj01 pdo_mysql]# ./configure --with-php-config=/usr/local/php5/bin/php-config --with-pdo-mysql=/usr

make

make install

 

############################

10、安裝gd

2015810日更新安裝gd的方法:


今天集團官網有個留言板的頁面的驗證碼圖片不顯示,經過和開發商的諮詢,原來是由於php的擴充套件gd沒有裝好,更具體的說是php gdjpeg沒有裝。因為版權的問題,GD原始碼安裝從2.0.33開始沒有jpeg了。如果裝jpeg,就需要自己另外下載安裝。


這兩個軟體包的下載地址是:






下載完後,先安裝jpeg,再安裝libgd,最後安裝php-gd


A
、安裝jpeg
cd jpeg-9a/
./configure --prefix=/usr/local/jpeg --enable-shared
  make
make install


如果報configure: error: png.h not found.yum install libpng libpng-devel libjpeg-devel來解決 


B
、安裝libgd
 cd libgd-2.1.0


./configure --prefix=/usr/local/gd --enable-shared --with-jpeg=/usr/local/jpeg --with-png --with-zlib
 1024  make
 1025  make install




C
、安裝php-gd
cd /root/soft/php-5.6.9/ext/gd
/usr/local/php5/bin/phpize
 ./configure --with-php-config=/usr/local/php5/bin/php-config --with-jpeg-dir=/usr/local/jpeg
  make
  make install


如果你操作完上面的三個步驟後,發現驗證碼圖片還是不顯示,那麼就在/root/soft/php-5.6.9/ext/gd目錄下執行make clean,然後再按照上述的C步驟重新安裝gd

檢視phpinfogd應該包含如下資訊。

另外為了讓顯示phpinfo的資訊,需要在/var/www/html的網站根目錄下的 .htaccess 加個a.php
RewriteEngine on
RewriteCond $1 !^(index\.php|a.php|kindeditor|admin|assets|uploads|en|css|js|components|img|_backend|_common|hna2013|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]


 

 說明: http://img.blog.itpub.net/blog/attachment/201508/10/28916011_1439194504wr4k.png

#####################

 

#####################

 

 

 

關於以下的擴充套件安裝方法,筆者就不再這裡寫了,相信大家能夠自己安裝了。

calendar

exif

ftp

gd

gettext

 

 

openssl

pcntl

 

 

shmop

sockets

wddx

xmlrpc

xmlwriter

xsl

zip

zlib

 

mysql

mysqli

odbc

pdo_mysql

PDO_ODBC

###############

 

集團官網有三個擴充套件沒有安裝,發現不影響業務應用。那就先不裝了。

 

mysqli

odbc

pdo_mysql

 

 

###############

 

所有php擴充套件安裝完後,在php.ini中新增目錄如下幾行。

 

vi /usr/local/php5/php.ini 

新增如下幾行:

extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-non-zts-20131226/"

extension = soap.so

extension = gd.so

extension = xmlrpc.so

extension = "pdo_odbc.so"

extension = "ldap.so"

extension = "bz2.so"

extension = "calendar.so"

extension = "curl.so"

extension = "exif.so"

extension = "ftp.so"

extension = "gettext.so"

extension = "gmp.so"

extension = "pcntl.so"

extension = "readline.so"

extension = "shmop.so"

extension = "sockets.so"

extension = "wddx.so"

extension = "xsl.so"

extension = "zip.so"

extension = "zlib.so"

extension = "mysql.so"

extension = "openssl.so"

 





附件列表


-->

相關文章