如何编写一个独立的 PHP 扩展

独立的 PHP 扩充能够单独于 PHP
源码之外举行分发。要创立几个如此的恢宏,须求有备无患好两样东西:

centos中添加php扩展pdo_mysql步骤,centospdo_mysql

本文内容是以 CentOS 为例,红帽多元的 Linux
方法应该都以那样,上边就详细表达步骤,在此边严重渺视哪些内容??隆⑺档脑悠咴影说挠泄
PDO 编写翻译安装的篇章。

1、踏入 PHP 的软件包 pdo 扩充目录中(注:不是 PHP 安装目录)
若果还未有下载:

1、下载 文件 wget
2、解压文件
tar zxvf PDO_MYSQL-1.0.2.tgz
3、配置和编写翻译文件
进去 在PHP源码包中步向cd /root/php源码文件/ext/pdo_mysql/PDO_MYSQL
执行 phpize 命令

代码如下 复制代码
/usr/local/php/bin/phpize

注:/usr/local/php 是本身的 php 安装目录

执行完 phpize 命令后,在 pdo_mysql 目录中就能产出 configure

推行配置

代码如下 复制代码
./configure –with-php-config=/usr/local/php/bin/php-config
–with-pdo-mysql=/usr/local/mysql/

参数表达:

–wi(www.111cn.net卡塔尔国th-php-config=/usr/local/php/bin/php-config 内定安装
PHP 的时候的构造
–with-pdo-mysql=/usr/local/mysql/ 内定 MySQL 数据库的装置目录地方
编译安装

代码如下 复制代码
make && make install

编写翻译完毕今后,请留意是还是不是现身相通以下图片所示新闻

代码如下 复制代码
/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626

(注意:不一样时间段目录名称恐怕不相同等)

编译安装到位之后,生成的 pdo_mysql.so 文件就停放在此个目录下。

2、修改 php.ini 文件

行使 vi 张开你机器的 php.ini
文件,加多意气风发段代码“extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-二零零六0626/pdo_mysql.so”,加载
pdo_mysql.so 文件

3、查看 phpinfo()

率先重启 Apache 服务器。使用 phpinfo(卡塔尔国 函数查看 php
的装置音讯,如现身下图所示表达 PDO 扩展安装成功
from:

概述

  • 配备文件 (config.m4卡塔尔(قطر‎
  • 你的模块源码

php pdo扩充难题

探究php.ini,找到下边包车型大巴那风姿罗曼蒂克行文本。
;Windows Extensions
上边都以用分号在前面主事掉了协理的增添模块,在后头扩展下边包车型客车黄金时代行代码。
extension=php_pdo.dll
那是颇负PDO驱动程序分享的恢弘,必得得有。然后,就看您使用什么数据库。借使运用MySQL,那么增添上面包车型客车后生可畏行。
extension=php_pdo_mysql.dll
封存php.ini,重启Apache服务器。就应有能够了。
 

        
Lamp布局是眼下成熟的网站使用方式之大器晚成,指的是合作专门的学业的一条龙类别和连锁软件,能够提供动态web站点服务及其使用开荒条件。

接下去大家来呈报一下只要制造这一个文件并整合起来。

在linux下怎在不重新安装apache的事态下, 加多 php_pdo_mysql 模块?

风姿浪漫、php5编写翻译参数如下:
./configure –prefix=/usr/local/php
–with-apxs2=/usr/local/apache2/bin/apxs –with-mysql=/usr/local/mysql
–with-mysqli=/usr/local/mysql/bin/mysql_config
–with-config-file-path=/usr/local/php/etc –with-iconv-dir=/usr/
–with-freetype-dir –with-jpeg-dir –with-png-dir –with-zlib
–with-libxml-dir=/usr/local/libxml2 –enable-xml –disable-rpath
–enable-discard-path –enable-safe-mode –enable-bcmath –enable-shmop
–enable-sysvsem –enable-inline-optimization –with-curl
–with-curlwrappers –enable-mbregex –enable-mbstring –with-mcrypt
–with-gd –enable-gd-native-ttf –with-openssl –with-mhash
–enable-sockets –with-xmlrpc –enable-zip –enable-soap –enable-exif
–enable-calendar –enable-magic-quotes –enable-wddx –enable-dba
–with-qdbm && make && make install
二、用phpize来加载pdo_mysql,
wget pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
tar xzvf PDO_MYSQL-1.0.2.tgz
cd PDO_MYSQL-1.0.2
/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 install
三、编辑/usr/local/etc/php.ini文件,增添一句extension=pdo.so,重启apache后生效。
四、验证php,输入php – m命令,里面有pdo_mysq.so…余下全文>>
 

本文内容是以 CentOS 为例,红帽多元的 Linux
方法应该都是那样,上面就详细表明步骤,在这里地严…

组成:Linux 、Apache、MySQL、php/perl/pytho

希图好系统工具

想要扩张能够在系统上编写翻译并打响运维,要求预备转以下工具:

  • GNU autoconf
  • GNU automake
  • GNU libtool
  • GNU m4

如上那些都得以从 获取。

注:以上那么些都以类 Unix 情况下技艺采纳的工具。

优势:开支低廉、可定制、易于开采、方便易用、安全和安静

改装八个业已存在的增添

为了展现出成立一个独自的扩充是相当轻巧的作业,大家先将二个曾经内嵌到 PHP
的强大改成独立扩张。安装 PHP 何况奉行以下命令:

$ mkdir /tmp/newext
$ cd /tmp/newext

今后你早就有了四个空目录。大家将 mysql 扩张目录下的文件复制过来:

$ cp -rp php-4.0.X/ext/mysql/* .
# 注:看来这篇 README 真的需要更新一下了
# PHP7 中已经移除了 mysql 扩展部分

到此地扩充就成功了,实行:

$ phpize

现行反革命你能够独立存放在这里个目录下的公文到任哪儿方,这一个扩大可以完全部独用立存在了。

客商在编写翻译时索要利用以下命令:

$ ./configure 
       [--with-php-config=/path/to/php-config] 
       [--with-mysql=MYSQL-DIR]
$ make install

诸有此类 MySQL 模块就能够动用内嵌的 MySQL 顾客端库恐怕已设置的放在 MySQL
目录中的 MySQL。

注:意思是说想要编写 PHP 扩张,你既必要已经安装了 PHP,也急需下载生龙活虎份
PHP 源码。

 

概念三个新扩充

笔者们给示例扩大命名称叫 “foobar”。

新扩大蕴涵多个能源文件:foo.c 和
bar.c(还恐怕有大器晚成对头文件,但那个不独有重要)。

身体力行扩充不援引任何外界的库(那点很关键,因为如此顾客就没有必要特意内定一些编写翻译选项了)。

LTLIBRARY_SOURCES
选项用于钦点能源文件的名字,你能够有自由数量的财富文件。

注:上面说的是 Makefile.in 文件中的配置选项,能够参谋
xdebug。

(1)希图专门的学业

修正 m4 后缀的安插文件

m4
配置文件能够钦点一些额外的反省。对于叁个单身扩充来讲,你只须求做一些宏调用就能够。

PHP_ARG_ENABLE(foobar,whether to enable foobar,
[  --enable-foobar            Enable foobar])

if test "$PHP_FOOBAR" != "no"; then
  PHP_NEW_EXTENSION(foobar, foo.c bar.c, $ext_shared)
fi

PHP_ARG_ENABLE 会自动安装好正确的变量以确认保证扩展能够被
PHP_NEW_EXTENSION 以分享格局运转。

PHP_NEW_EXTENSION
的率先个参数是扩张的名号,第三个参数是能源文件。第2个参数 $ext_shared
是由 PHP_ARG_ENABLE/WITHPHP_NEW_EXTENSION 设定的。

请始终使用 PHP_ARG_ENABLEPHP_ARG_WITH
举办安装。即便你不思量发表你的 PHP 模块,那个设置也得以保险令你的模块和
PHP 主模块的接口保持紧凑。

注:PHP_ARG_ENABLEPHP_ARG_WITH
应该是用以定义模块是动态扩大依旧静态编写翻译进 PHP 中,就跟编写翻译 PHP 时行使的
--enable-xxx--with-xxx 一样。

[root@crushlinux ~]# service  iptables stop               //关闭防火墙
[root@crushlinux ~]# setenforce 0                        //关闭seLinux

始建能源文件

ext_skel 可感觉您的 PHP
模块创设一些通用的代码,你也得以编写一些为主函数定义和 C
代码来管理函数的参数。具体消息能够查阅
READNE.EXT_SKEL。

毫不操心未有楷模,PHP
中有许多模块供您仿照效法,选取二个简约的点起来,增添你和煦的代码。

注:ext_skel
能够生成好核心模块需求的财富文件和配备文件,不须求本人创建。

(2)确认未有动用以rpm形式安装的httpd、MySQL及PHP

修改自定义模块

将 config.m4 文本和财富文件放到同二个目录中,然后施行 phpize (PHP 4.0
以上的版本编写翻译 PHP 的时候都安装了 phpize)。

万生龙活虎您的 phpize 不在系统境况变量中,你必要内定相对路线,举例:

$ /php/bin/phpize

本条命令会自行复制必须的创设文件到当前目录并基于 config.m4
开立构造文件。

因而以上的步骤,你已经有了一个单身的扩充了。

[root@crushlinux ~]# rpm -e httpd httpd-manual webalizer subversion mod_python mod_ssl mod_perl system-config-httpd php php-cli php-ldap php-common php-mysql  mysql-server mysql dovecot –nodeps

设置扩张

扩温智翔以经过以下命令编写翻译安装:

$ ./configure 
            [--with-php-config=/path/to/php-config]
$ make install

安装

给模块增多分享援救

突发性独立扩张需如若分享的已供别的模块加载。接下来笔者会解释什么给已经创办好的
foo 模块增多分享扶持。

  1. 在 config.m4 文件中,使用 PHP_ARG_WITH/PHP_ARG_ENABLE
    来设定扩大,那样就可以活动使用 --with-foo=shared[,..]
    --enable-foo=shared[,..] 那样的授命作为编写翻译参数了。
  2. 在 config.m4 文件中,使用 PHP_NEW_EXTENSION(foo,.., $ext_shared)
    使扩张能够被营造。
  3. 增添以下代码到你的 C 语言能源文件中:

   #ifdef COMPILE_DL_FOO
   ZEND_GET_MODULE(foo)
   #endif

这意气风发段讲的方面都事关过了,这里只是又强调了黄金时代晃。

 

PECL 网址约定

设若您构思公布你的扩展到 PECL 的网址,须要思虑以下几点:

  1. 添加 LICENSE 或 COPYING 到 package.xml
  2. 内需在扩张头文件中定义好版本新闻,这么些宏会被 foo_module_entry
    调用来声称扩张版本:

   #define PHP_FOO_VERSION "1.2.3"

安装httpd

1、下载apache

wget http://archive.apache.org/dist/httpd/httpd-2.2.17.tar.gz

2、解压压缩包

tar xf httpd-2.2.17.tar.gz

3、编写翻译源码包,何况安装

(1)cd httpd-2.2.17
    (2)./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi

图片 1

编写翻译完结后,如上海图书馆,表明已经编写翻译成功

设若现身以下错误

则在编写翻译时参预–with-included-apr就能够。

–prefix=:指虞升卿装目录

–enable-so:启用动态加载模块扶持,使httpd具有进一层扩大作用的力量

–enable-rewrite::启用网页地址重写效用,用于网址优化及目录迁移爱惜。(假如访谈网址未找到,将电动跳转到别的网页)

–enable-charset-lite:运营字符集协理,以便帮忙使用各样字符集编码的网页。

–enable-cgi:启用CGI脚本程序辅助,以便于网址的施用访问手艺

–help:扶持信息

 

4.安装

make && make install

 

5.优化实行路线

[root@crushlinux local]# ln -s /usr/local/httpd/bin/*  /usr/local/bin/

注:在恣意目录下。都足以运用httpd下的指令,为命令路径增加一条软连接。

 

增添httpd为系统服务天公地道命名叫httpd

cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd(将服务控制工具复制到init.d下)
vi /etc/init.d/httpd  #编辑启动脚本,增加红色部分内容,以便通过chkconfig管理
    #!/bin/sh
    #chkconfig:345 66 88
    #description:Startup script for the Apache HTTP Server

解释:

    345 66
88表示:
345运作等第是开启的,66为服务运营顺序,88服务为结束顺序。

 chmod +x /etc/init.d/httpd
        chkconfig --add httpd            //将httpd服务添加为系统服务
        chkconfig --list httpd
启动服务
    service httpd start

报错1:httpd: Could not reliably determine the server’s fully
qualified domain name, using ::1 for ServerName   

不可能找到完全合格的域名

    解决:vim /usr/local/httpd/conf/httpd.conf

        97 #ServerName www.example.com:80

        98 ServerName localhost:80

   报错2:

/usr/local/apache/bin/httpd: error while loading shared libraries:
libiconv.so.2: cannot open shared object file: No such file or
directory

有很多so模块在/usr/local/lib目录下,所以在/etc/ld.so.conf中加入/usr/local/lib这一行

[root@crushlinux conf]# vi /etc/ld.so.conf
/usr/local/lib
[root@crushlinux conf]# /sbin/ldconfig -v

至今您已经将 Apach源代码安装在 /usr/local/apache。本源代码安装支撑可装载模块

和正式的 MPM
prefork。之后,能够动用如下命令运营 Apache
服务器:

/usr/local/httpd/bin/apachectl start

二.安装MySQL

1.备选干活

(1)查看是不是使用以rpm包安装的mysql-server-mysql软件,假设有,将其卸载。

[root@crushlinux ~]# rpm -qa | grep mysql
mysql-libs-5.1.71-1.el6.x86_64
rpm -ivh /mnt/Packages/ncurses-devel-5.7-3.20090208.el6.x86_64.rpm

(2)mysql5.5上述的本子都需求cmake编译。并非./configure

之所以供给安装cmake

tar xf  cmake-2.8.6.tar.gz
cd cmake-2.8.6
./configure
gmake && gmake install
或这是
yum -y install cmake

2.源码编写翻译及安装。

(1)

[root@crushlinux ~]#groupadd mysql
[root@crushlinux ~]# useradd -M -s /sbin/nologin  mysql -g mysql

(2)解包

tar  xf mysql-5.5.22.tar.gz -C  /usr/src/
cd  /usr/src/mysql-5.5.22/

(3)配置

cmake  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql   -DSYSCONFDIR=/etc
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all

-DCMAKE_INSTALL-PREFIX=/usr/local/mysql  
:指定安装目录

-DSYSCONFDI牧马人=/etc                                                      
:钦命起首化参数文件目录

-DDEFAULT_CHATiggoSET=utf8
                               :钦赐暗中同意的字符编码集,如utf8

-DDEFAULT_COLLATION=utf8_general_ci     
:内定暗许使用的字符集核对准则。Utf8_general_ci是适用于utf-8字符集的通用准则

-DWITH_EXTRA_CHA传祺SETS=all               
:钦赐额外帮忙的别的字符集编码(默许接济具备)

如报以下错误:消除办法如下:

rpm -ivh /mnt/Packages/ncurses-devel-5.7-3.20090208.el6.x86_64.rpm
[root@crushlinux mysql-5.5.22]#  rm  CMakeCache.txt

4)安装

make && make install

5).安装后的此外调治

chown -R  mysql:mysql /usr/local/mysql/

6)构建布局文件

[root@crushlinux mysql]#rm -fr /etc/my.cnf
[root@crushlinux mysql]#cp  support-files/my-medium.cnf  /etc/my.cnf

7)早先化数据库

/usr/local/mysql/scripts/mysql_install_db --user=mysql  --basedir=/usr/local/mysql  
--datadir=/usr/local/mysql/data/

8卡塔尔设置情状变量

[root@crushlinux mysql]# ln -s  /usr/local/mysql/bin/*  /usr/local/bin/

9)增多系统服务

[root@crushlinux mysql]# cp support-files/mysql.server  /etc/init.d/mysqld
[root@crushlinux mysql]# chmod +x /etc/init.d/mysqld

起步服务

[root@crushlinux mysql]# service mysqld start
Starting MySQL..                                           [  OK  ]

5.登入验证

[root@crushlinux mysql] mysql

三.安装PHP

1.源码包安装libmcript

[root@crushlinux ~]# tar zxf libmcrypt-2.5.8.tar.gz [root@crushlinux ~]# cd libmcrypt-2.5.8/
[root@crushlinux libmcrypt-2.5.8]# ./configure
[root@crushlinux libmcrypt-2.5.8]# make && make install
[root@crushlinuxlibmcrypt-2.5.8]#ln -s /usr/local/lib/libmcrypt.* /usr/lib/

2.源代码安装mhash

[root@crushlinux ~]# tar zxf mhash-0.9.9.9.tar.gz 
[root@crushlinux ~]# cd mhash-0.9.9.9/
[root@crushlinux mhash-0.9.9.9]# ./configure
[root@crushlinux mhash-0.9.9.9]# make && make install
[root@crushlinux mhash-0.9.9.9]# ln -s /usr/local/lib/libmhash* /usr/lib/

3、源代码安装mcrypt

[root@crushlinux ~]# tar zxf mcrypt-2.6.8.tar.gz
[root@crushlinux ~]# cd mcrypt-2.6.8/
[root@crushlinux mcrypt-2.6.8]# ./configure
[root@crushlinux mcrypt-2.6.8]# make && make install

编写翻译时候报错:

configure: error: *** libmcrypt was not found

撤消办法:

第一步:ln -s   

/usr/local/bin/libmcrypt_config   /usr/bin/libmcrypt_config

 

第二步:

export LD_LIBRARY_PATH=/usr/local/lib: LD_LIBRARY_PATH

 

4、编译php

[root@crushlinux ~]# tar zxf php-5.3.6.tar.gz 
[root@crushlinux ~]# cd /php-5.3.6
[root@crushlinux php-5.3.6]# ./configure --prefix=/usr/local/php5 --with-mcrypt --with-apxs2=/usr/local/httpd/bin/apxs --with-mysql=/usr/local/mysql --with-config-file-path=/usr/local/php5 --enable-mbstring

编写翻译参数解释:

–prefix=/usr/local/php5                  //指定安装目录

–with-mcrypt                             //加载增加工具帮助

–with-apxs2=/usr/local/httpd/bin/apxs
//设置Apache提供的apxs模块                         
                    
程序文件地方

–with-mysql=/usr/local/mysql              //钦定mysql服务的装置路线

–with-config-file-path=/usr/local/php5
//钦定php配置文件“php.ini”                        
                    
的贮存路线

–enable-mbstring                      //启用多字节字符串功效

如报以上错误,消亡方法如下

[root@crushlinux php-5.6.30]# rpm -ivh
/media/cdrom/Packages/libxml2-2.7.6-14.el6.x86_64.rpm

[root@crushlinux php-5.6.30]# rpm -ivh
/media/cdrom/Packages/zlib-devel-1.2.3-29.el6.x86_64.rpm

[root@crushlinux php-5.6.30]# rpm -ivh
/media/cdrom/Packages/libxml2-devel-2.7.6-14.el6.x86_64.rpm

5.安装

make &&  make install

四.整合lamp组件意况

php.ini配置文件

设置好PHP软件包之后,服务器并不会自动创立php.ini配置文件,在源码包目录下提供了四个样例配置文件。

[root@crushlinux php-5.3.6]# cd php-5.3.6
    [root@crushlinux php-5.3.6]# ls php.ini-*
/usr/src/php-5.3.6/php.ini-development //开发版样例文件,用户学习,测试
/usr/src/php-5.3.6/php.ini-production//生产版样例文件,用户实际运用

1)复制样例文件

[root@crushlinux php-5.3.6]# 
cp php.ini-development /usr/local/php5/php.ini

2)php.ini配置调度

[root@crushlinux php-5.3.6]# vi /usr/local/php5/php.ini
773 default_charset = "utf-8"        //设置默认字符集为utf-8
871 file_uploads = On                //允许通过PHP网页上传文件
880 upload_max_filesize = 2M        //允许上传的文件大小限制
883 max_file_uploads = 20            //每个HTTP请求最多允许上传的文件数
728 post_max_size = 8M                //每次通过表单POST提交的数据量限制
226 short_open_tag = On                //允许识别PHP短语法标记,即<? … ?>

3)调整Apache配置

[root@crushlinux ~]# vim /usr/local/httpd/conf/httpd.conf
53 LoadModule php5_module        modules/libphp5.so    
    配置加载PHP程序的模块文件php5_module模块名称
modules/libphp5.so    模块位置

54 AddType application/x-httpd-php .php .phtml                 
    添加对“.php”类型网页支持
169  DirectoryIndex index.php index.html        
    识别常见的php首页文件
[root@crushlinux ~]# /usr/local/httpd/bin/apachectl restart

五、测试

1)测验PHP能还是无法平常提供劳务

[root@crushlinux ~]# vim /usr/local/httpd/htdocs/test1.php
<?php
phpinfo();        内建函数用于显示PHP环境信息
?>
[root@crushlinux ~]# /usr/local/httpd/bin/apachectl restart

浏览器输入:

图片 2

就如上新闻为准确

 

2)测验PHP能还是不可能健康访谈mysql数据库

[root@crushlinux ~]# vi /usr/local/httpd/htdocs/test2.php

<?php
$link=mysql_connect('localhost','root','');  //连接的数据库
if($link) echo "OK!!";                    //    连接成功时的反馈
else echo "FAILD!!";                        //    失败时的反馈
?>

七.Lamp布局应用实例

部署phpMyAdmin系统

  • phpMyAdmin是三个运用PHP语言编写,用来治本MySQL数据库的Web应用连串。
  • 通过该套件的网页界直面MySQL数据库举办保管和掩护。 

实施遭遇寄予于:

1.解包并复制到网址目录:

Eg:将phpMyAdmin套件安顿到网址根目录下,以便通过地点

[root@crushlinux~]# tar zxf
phpMyAdmin-3.3.10-all-languages.tar.gz

[root@crushlinux~]# mv
phpMyAdmin-3.3.10-all-languages/
/usr/local/httpd/htdocs/phpMyAdmin

2.独当一面构造文件config.inc.php:

暗中同意提供的样例配置文件为config.sample.inc,以此起家config.inc.php配置文件,查找并改过配置文件中的“blowfish_secret”行,并安装三个短语密钥(此密钥用于网页cookie认证,无需客户回忆)

[root@crushlinux~]# cd /usr/local/httpd/htdocs/phpMyAdmin/
[root@crushlinuxphpMyAdmin]# cp config.sample.inc.phpconfig.inc.php

[root@crushlinuxphpMyAdmin]# vim config.inc.php
$cfg['blowfish_secret'] = '123.asd';

3.拜见phpMyAdmin的Web管理分界面:

在浏览器中做客

图片 3

授权配置操作:

图片 4

phpMyAdmin主页面:

图片 5

 

phpMyAdmin系统暗许使用cookie认证方法,在第一回访问时页面下方会提醒“必得启用Cookies工夫登陆”,须求在顾客机的浏览器启用cookies机制。【直接F5刷新就ok了】

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注