php安装
## 下载包源码包
[root@localhost src]# wget http://cn2.php.net/distributions/php-5.3.28.tar.gz
## 解压缩
[root@localhost src]# tar zxf php-5.3.28.tar.gz
[root@localhost src]# cd php-5.3.28
## 初始化
[root@localhost php-5.3.28]# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --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 --disable-ipv6
apxs2(它是perl语言写的)依赖于apache,实现自动配置扩展模块。php是httpd的一个动态模块也会放到/apache2/modules/目录下与.so文件为同一级别。虽然模块存在该目录下,还需要加入一行配置指定路径进行加载,此操作就是由apxs2所指定的工具完成的。
--with-mysql= 依赖于mysql
ERROR:解决方案
##############################################################
## error: xml2-config not found. Please check your libxml2 installation.
## yum install -y libxml2-devel
##
## error: Cannot find OpenSSL's <evp.h>
## yum install -y openssl openssl-devel
##
## error: Please reinstall the BZip2 distribution
## yum install -y bzip2 bzip2-devel
##
## error: jpeglib.h not found.
## yum install libjpeg-devel -y
##
## error: png.h not found.
## yum install -y libpng libpng-devel
##
## error: freetype.h not found.
## yum install -y freetype freetype-devel
##
## error: mcrypt.h not found. Please reinstall libmcrypt.
## yum -y install epel-release #安装扩展源,否则找到一下包
## [root@localhost php-5.3.28]# yum list |grep -i mcrypt
## libmcrypt-devel.i686 2.5.8-9.el6 epel
## libmcrypt-devel.x86_64 2.5.8-9.el6 epel
## yum install -y libmcrypt-devel
##
## # 查看安装包有那些文件
## rpm -ql bzip2-devel
##############################################################
## 安装成功
Thank you for using PHP.
[root@Lx php-5.3.28]# echo $?
0
## 将.c文件gcc成可执行文件
[root@localhost php-5.3.28]# make
说明:我使用的是解决方法二
## 安装
[root@localhost php-5.3.28]# make install
## 写一个简单的php程序进行测试
[root@localhost php-5.3.28]# vim /tmp/1.php
<?php
echo "wyy x linux";
echo "\n";
?>
## 通过可执行文件bin/php解析程序
[root@localhost php-5.3.28]# /usr/local/php/bin/php /tmp/1.php
wyy linux
## 查看php加载了那些模块
[root@localhost php-5.3.28]# /usr/local/php/bin/php -m
[PHP Modules]
......
gd 验证码
[Zend Modules]
## 查看php配置参数
[root@localhost php-5.3.28]# /usr/local/php/bin/php -i
## 拷贝php配置文件模板
[root@localhost php-5.3.28]# cp /usr/local/src/php-5.3.28/php.ini-production /usr/local/php/etc/php.ini
php.ini-development测试、开发环境
php.ini-production生产环境
## 自动加载配置文件
[root@localhost php-5.3.28]# /usr/local/php/bin/php -i |grep -i configuration
Loaded Configuration File => /usr/local/php/etc/php.ini
## 查看apache配置文件
[root@localhost php-5.3.28]# cat /usr/local/apache2/conf/httpd.conf|grep LoadModule
LoadModule php5_module modules/libphp5.so
## 查看已加载模块是否存在php5_module
[root@localhost php-5.3.28]# /usr/local/apache2/bin/apachectl -M
Loaded Modules:
......
php5_module (shared)
Syntax OK
测试php解析
## 配置php解析
[root@localhost php-5.3.28]# vim /usr/local/apache2/conf/httpd.conf
AddType application/x-gzip .gz .tgz #在这行下添加以下内容
AddType application/x-httpd-php .php
<IfModule dir_module>
DirectoryIndex index.html index.php #此模块中添加index.php
</IfModule>
## 检查配置语法重新加载配置文件
[root@localhost php-5.3.28]# /usr/local/apache2/bin/apachectl -t
Syntax OK
[root@localhost php-5.3.28]# /usr/local/apache2/bin/apachectl restart
## 测试php解析
[root@localhost php-5.3.28]# mv /tmp/1.php /usr/local/apache2/htdocs/
[root@localhost php-5.3.28]# cat /usr/local/apache2/htdocs/1.php
<?php
echo "wyy x linux";
echo "\n";
?>
# php测试程序
<?php
phpinfo();
?>
解释说明:
当把这个脚本,在网页上去查看的时候,会看到好多配置信息及加载的模块,通过这个可以用来排查一些错误
#########当你遇到不能解析的时候,要通过这几方面去排查###########
1、看一看apache有没有加载php
2、要去编辑配置文件/usr/local/apache2/conf/httpd.conf,查看一下有没有AddType和libphp5.so
## 查看模块内容
[root@localhost php-5.3.28]# ldd /usr/local/apache2/modules/libphp5.so
3、看看selinux关没关
4、看看php脚本是否正确
5、若解析不了,检查也都没错,最好再重启一下 /usr/local/apache2/bin/apachectl restart,再看解析是否成功
6、也查看一下日志
############################################################
## 解析成功
[root@localhost php-5.3.28]# curl localhost/1.php
wyy x linux