linux下php源码安装(apache服务器篇)

1、配置apache支付php5

     编辑 /usr/local/apache2/conf/httpd.conf 文件     
     找到:
    AddType  application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    在后面添加:
    AddType application/x-httpd-php .php(使Apcche支持PHP)
    AddType application/x-httpd-php-source .php5   
    找到:
    <IfModule dir_module>
          DirectoryIndex index.html
    </IfModule>
    添加:
    <IfModule dir_module>
          DirectoryIndex index.html index.php
    </IfModule>    
    找到:
    #ServerName www.example.com:80
    修改为:
    ServerName 127.0.0.1:80或者ServerName localhost:80



-----------------------------------------------------------------------------------------------------------------


  二、安装PHP 

安装之前先安装:libxml2,libxml2-devel

yum install libxml2 -y

yum install libxml2-devel -y

1、 下载
    http://www.php.net/downloads.php
2、解压
    tar -zxvf php-5.3.16.tar.gz
3、建立目标文件夹
    mkdir /usr/local/php
4、配置
    ./configure --prefix=/usr/local/php    --with-apxs2=/usr/local/apache/bin/apxs 

     --with-mysql=/usr/local/mysql      --with-pdo-mysql=/usr/local/mysql   

     --with-mysqli=/usr/local/mysql/bin/mysql_config


    (1)-with-apxs2=/usr/local/apache/bin/apxs  apxs是一个为Apache 2 HTTP服务器编译和安装扩展模块的工具,使之可以用由mod_so提供的LoadModule指令在运行时加载到Apache服务器中。我的理解是通过这个工具把PHP模块动态加载到Apache中

    (2)--with-mysql  加载mysql扩展

    (3)--with-pdo-mysql 加载pdo扩展

    (4)--with-mysqli 加载mysqli扩展



5、编译和安装
    make;make install


6、配置文件


    cp /usr/local/src/php-5.3.16/php.ini-development  /usr/local/php/lib/php.ini


7.重启apache
8.测试
    在apache的htdocs下建立一个php文件test.php,里面的内容如下:
    <?php
         phpinfo();
    ?>
    然后在浏览器里输入http://127.0.0.1/test.php



php中GD扩展库的动态加载:

在运行phpize之前先安装yum install autoconf


--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

phpize浅谈
一、phpize是干嘛的?

phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块

二、如何使用phpize?

当php编译完成后,php的bin目录下会有phpize这个脚本文件 。在编译你要添加的扩展模块之前,执行以下phpize就可以了;

------------------------------------
# 如果在编译的时候忘记添加某些模块,可以使用这种办法来重新编译添加!
# 首先,进入PHP目录(未编译)的扩展目录
cd /home/soft/php-5.2.14/ext/ftp/
# 调用phpize程序生成编译配置文件
# find / -name phpize
/usr/local/php/bin/phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
# 编译扩展库
/configure –with-php-config=/usr/local/php/bin/php-config
make
# make成功执行后,生成的扩展库文件在当前目录的 modules 子目录下
# 编辑php.ini文档,找到extension_dir的目录,将编译好的扩展文件复制到extension下面
vim /usr/local/php/etc/php.ini
# extension_dir = “/usr/local/php/lib/”
# extension=ftp.so

复制ftp扩展库到相应的目录下:

cp ftp.so /usr/local/php/lib/

重启apache服务器后在浏览器查看phpinfo是否打印出ftp支持
----------------------------------------

二、安装MySQLi扩展

在这里要用到phpize,phpize 命令是用来准备 PHP 扩展库编译环境,一般在你安装好PHP后,会在安装PHP的bin目录下找到这个命令。

如果在执行phpize命令后出现找不到autoconf之类的提示,请安装好autoconf后再次执行。

以下指令的目录路径,请网友们根据自己系统的实际情况作相应修改。

PHP源码包文件夹下的EXT文件夹就是放置着目前版本的可用扩展,CD进去看看都有哪些你需要的?应该看到mysqli文件夹了吧~~~

cd /opt/software/php-5.3.4/ext/mysqli

在当前目录下执行phpize

[root@localhost mysqli]#/opt/php/bin/phpize

Configuring for:

PHP Api Version:                     20090626

Zend Modeule Api No:             20090626

Zend Extension Api No:           220090626

[root@localhost mysqli]#./configure  –with-php-config=/opt/php/bin/php-config  –with-mysqli=/opt/mysql/bin/mysql_config

[root@localhost mysqli]#make


到modules目录下找到mysqli.so库文件复制到/usr/local/php/lib/下

cp mysqli.so /usr/local/php/lib/

编辑php.ini文件

cd /usr/local/php/lib/

vim php.ini

首先找到extension_dir设置php扩展所在目录:extension_dir ='/usr/local/php/lib/'

然后找到extension添加mysqli扩展库:extension=mysqli.so


之后重新启动Apache服务,再次打开PHP信息页便可看到MySQLi项。

/usr/local/apache/bin/apachectl restart

在浏览器输入a.php查看phpinfo()打印的结果是否包含gd库

localhost/a.php


--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

GD扩展库加载:

1.在php源码文件下进入gd目录:

cd  ext/gd/

2.运行phpize:

/usr/local/php/bin/phpize

3.配置gd库:

./configure  –with-php-config=/opt/php/bin/php-config

注意配置期间如有错误下面有解决#/usr/local/php/bin/phpize方案。

4. 编译:

make

5.到modules下会看到编译出的gd.so扩展库文件,复制到/usr/local/php/lib/

cd modules

cp gd.so /usr/local/php/lib/

6.打开php.ini文件

cd /usr/local/php/lib/

vim php.ini

加入extention=gd.so到extension部分.

7 .重启apache然后在浏览器测试phpinfo打印中是否友gd扩支持.

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

Linux系统下手动安装pdo_mysql

又遇到错误了:configure: error: Cannot find php_pdo_driver.h.

找了一下资料,没发现有人遇到过这种问题,用locate php_pdo_driver.h 发现在pdo模块目录上有,查了一下资料发现,要安装pdo_mysql必须先安装pdo模块,好吧,先装pdo模块吧

cd  php5.4/ext/pdo/

/usr/local/webserver/php/bin/phpize

./configure --with-php-config=/usr/local/webserver/php/bin/php-config  --enable-pdo=shared

make &&make install

cd php5.4/ext/pdo_mysql/

/usr/local/webserver/php/bin/phpize

./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-pdo-mysql=/data/mysql/bin/mysql_config

make &&make install

编译成功后会看到php安装目录下出现了扩展模块的目录

交以下几行添加至php/lib/php.ini 文件上

extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/"
extension=pdo.so
extension=pdo_mysql.so
extension=memcache.so

[root@localhost yum.repos.d]# php -m
[PHP Modules]
Core
ctype
curl
date
ereg
fileinfo
filter
hash
iconv
json
mbstring
memcache
mysql
pcre
PDO
pdo_mysql
Phar
posix
Reflection
session
sockets
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tokenizer
zlib

[Zend Modules]

或者:/usr/local/webserver/php/bin/php -r "phpinfo();"|grep -i pdo_mysql

终于成功了

 



----------------------------------------------------------------------

-----------------------------------------------------------------------

以下是配置时的错误的解决方案

-----------------------------

checking for T1lib support... no
checking whether to enable truetype string function in GD... yes
checking whether to enable JIS-mapped Japanese font support in GD... no
checking for fabsf... yes
checking for floorf... yes
configure: error: jpeglib.h not found.
解决方法 yum install -y libjpeg libjpeg-devel

-------------------------------------------------------------------------------

checking whether to enable JIS-mapped Japanese font support in GD... no
checking for fabsf... yes
checking for floorf... yes
checking for jpeg_read_header in -ljpeg... yes
configure: error: png.h not found.

解决方法 yum install -y libpng libpng10 libpng10-devel libpng-devel

----------------------------------------------------------------------------------------------

checking whether to enable JIS-mapped Japanese font support in GD... no
checking for fabsf... yes
checking for floorf... yes
checking for jpeg_read_header in -ljpeg... yes
checking for png_write_image in -lpng... yes
If configure fails try --with-xpm-dir=<DIR>
configure: error: freetype.h not found

解决方法 yum install freetype-devel  -y

---------------------------------------------------------------------------------

checking for ANSI C header files... (cached) yes
checking for LDAP support... yes
checking for LDAP Cyrus SASL support... yes
configure: error: Cannot find ldap.h

解决方法 yum install nss_ldap openldap openldap-clients openldap-devel openldap-servers

checking for LDAP support... yes
checking for LDAP Cyrus SASL support... yes
configure: error: Cannot find ldap libraries in /usr/lib.

解决方法cp -frp /usr/lib64/libldap* /usr/lib  即可

-----------------------------------------------------------------

/usr/bin/ld: cannot find -lltdl
collect2: ld returned 1 exit status
make: *** [sapi/fpm/php-fpm] Error 1

解决方法

cd libmcrypt-2.5.8/libltdl/

./configure --enable-ltdl-install

make && make install

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


linux下php默认不开启gd库,也不支持DOMDocument         #即 DOM扩展


没有gd库的话,验证码显示不了,
没有xml.so的话,php操作不了xml,好端端的程序就运行不起来了
网上一堆人说要重新编译php,安装,扯淡,怎么不说重装系统呢。依赖项能折腾死。
因此先查看他们版本
rpm -qa |grep php-gd
rpm -qa |grep php-xml
如果没有装,就无输出。于是
yum install php-gd
yum install php-xml
如果 ubuntu,debian系的,设置好源后apt-get install 文件名
再service httpd restart 重启apache 即可!

如果是自己编译的php,那就执行上面的之后可能还要手动添加扩展:
find / -name php.ini 找到php.ini路径
再vim 路径,
看看extension_dir=什么,
记下扩展文件夹路径
用find / -name dom.so 等,分别找到
dom.so xmlwriter.so xmlreader.so xsl.so gd.so
移动到php.ini指定的扩展文件夹里

vim php.ini路径,
加上
extension=dom.so
extension=gd.so
等等上面5个so重启apache即可。

没有yum源的话可以自己找一个,运气好能找到,找不到的话就在这里搜rpm装。这里的rpm解决了令人头痛的依赖。很不错。
http://rpmfind.remotelan.net/linux/RPM/index.html

如果出现 Header V3 DSA signature_ NOKEY, key ID
error: Header V3 DSA signature: BAD, key ID
之类的错误,使用强制安装即可

rpm -ivh jdk-1_5_0_07-linux-i586.rpm --nodeps --force

centos的话也可以导入新GPG key:

rpm --import /etc/pki/rpm-gpg/RPM*

问题解决!


更多1


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值