首页 » PHP » 安装PHP

安装PHP

以下笔记为CentOS上的PHP安装。

确认ApacheMysql安装成功后执行:

$ ./configure --with-apxs2=PATH --with-mysql=PATH --prefix=PATH

Apache 1.x和Apache 2.x的配置不同,详见官方文档。PHP提供了多种访问Mysql的接口,以及Mysql底层驱动(过时的libmysql以及新的mysqlnd)。

根据我的需求,完整的configure(详细的参数解析):

$ ./configure --with-apxs2=$HOME/tools/apache2/bin/apxs --with-mysqli --with-mysql --prefix=$HOME/tools --with-readline --with-zlib=/usr/local --with-openssl --with-curl --with-gd --enable-mbstring -with-freetype-dir=/usr/include/freetype2/freetype

PHP编译完成后,一些重要的文件和目录的分布情况如下:

./libs/libphp5.la
./libs/libphp5.so
./sapi/cli/php          # php命令行工具
./sapi/cgi/php-cgi      # php-cgi
./scripts/phpize        # 一个shell脚本,为编译PHP扩展准备环境
./php.ini-production    # php.ini 模版
./php.ini-development   # php.ini 模版

PHP安装完毕后,将自动把动态库移到Apache的modules路径(cp libphp5.so /PATH/TO/APACHE/MODULES)。

修改Apache的配置文件,使之支持PHP:

LoadModule php5_module modules/libphp5.so

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

如果想要隐藏服务器的文件类型,例如用index.html替代index.php,可以依葫芦画瓢:

<FilesMatch \.html$>
    SetHandler application/x-httpd-php
</FilesMatch>

编译参数解析

参数说明
--with-zlib支持zlib压缩。
--with-openssl支持SSL。
--with-curl支持curl库。
--with-readline让PHP CLI支持readline。
--with-gd支持GD库(绘图)。

安装过程中的疑难杂症

支持GD的问题

为支持GD库(生成图片),安装:

# yum install libpng-devel.i686

configure通过,make时报错:

/home/bailing/download/php-5.4.1/ext/gd/gd.c:1254: undefined reference to `php_gd_gdFontCacheShutdown'
ext/gd/.libs/gd.o: In function `zm_startup_gd':
/home/bailing/download/php-5.4.1/ext/gd/gd.c:1151: undefined reference to `gdFontCacheMutexSetup'
ext/gd/.libs/gd.o: In function `zm_shutdown_gd':
/home/bailing/download/php-5.4.1/ext/gd/gd.c:1134: undefined reference to `gdFontCacheMutexShutdown'

回想应该是没有安装GD的开发包:

# yum install gd-devel.i686

再次make通过,检查:

$ ./sapi/cli/php -m|grep gd
gd

运行程序出现:

Call to undefined function imagettftext()

这个问题是没有freetype的问题导致,先用yum安装:

# yum install freetype-devel.i686

并在configure时添加:

-with-freetype-dir=/usr/include/freetype2/freetype

重新make,运行程序成功。

安装PHP扩展

查看PHP扩展的安装目录:

$ pear config-get php_dir

分享

0