关于给apache添加PHP扩展的方法

关于给apache添加PHP扩展的方法

 

近期,php官方报出php所有版本都有漏洞,我们的官网也存在该漏洞,于是我用了好几天的时间,才弄明白php更新的方法。

 

我们官网php的版本是5.3.3,于是我将其更新到了最新版本5.6.9

 

今天写此文,是为了记录我这次安装php的方法,以便搜索到此文的人给予参考。

 

php 官方下载地址

https://php.net/downloads.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模块了。

 如果还要安装扩展别的模块可以以此类推。

 

参考文档:http://www.111cn.net/phper/php-cy/60079.htm

 

 

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

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,就需要自己另外下载安装。


这两个软件包的下载地址是:
http://libgd.bitbucket.org/


http://www.ijg.org/files/


下载完后,先安装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"

 





附件列表


-->

转载于:http://blog.itpub.net/28916011/viewspace-2127155/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值