关于给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
但是我安装php的odbc模块一直不成功,提示:
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了:
编译安装php的pdo_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/
其实就是curl的dev包没有安装, 解决方案:
# 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
2015年8月10日更新安装gd的方法:
今天集团官网有个留言板的页面的验证码图片不显示,经过和开发商的咨询,原来是由于php的扩展gd没有装好,更具体的说是php gd的jpeg没有装。因为版权的问题,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。
查看phpinfo,gd应该包含如下信息。
另外为了让显示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]
#####################
#####################
关于以下的扩展安装方法,笔者就不再这里写了,相信大家能够自己安装了。
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/