您的位置:首页 > 运维架构 > Apache

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

2014-12-17 11:32 585 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: