PHP扩展开发:安装PHP
本文最后更新于 4749 天前,其中的信息可能已经有所发展或是发生改变。

前言
在几种情况下,我们会需要进行PHP扩展开发:

  1. PHP本身无法访问的资源或是调用,通过扩展的方式可以实现
  2. 处于性能和效率的考虑,用C实现会更好
  3. 处于商业或代码保护考虑,将代码封装起来
  4. 为了更深入的了解PHP,从这里入门
    1. 不管是出于什么原因吧,在看这篇文章的时候,我默认你是有进行PHP扩展开发这个需求的。本篇文章会分为三个系列从安装、简单实现一个扩展、到深入理解扩展机制和相关API。这也计划把自己最近一段时间以来做PHP扩展开发的一些经验和记录写下来。

      准备工作
      PHP扩展开发首先要有的是一个源码安装的PHP环境,从简单的角度出发,推荐我们公司的开源项目MooENV

      这是一个自动化部署LAMP环境的开源项目,目前主要是公司运维的同事在维护。特别适合VPS或者虚拟机一键安装环境使用,多了不推荐了,我们开始吧。

      安装Git
      在CentOS 5.x下面安装Git需要自己编译,详细参见文章《在CentOS上安装Git》;CentOS 6.x下直接yum install git即可

      安装MooENV
      首先把MooENV的源码git clone到本地,才能开始安装,好按照下面的步骤继续吧。

      git clone git://github.com/Ismole/MooENV.git
      cd MooENV/
      dmesg -c #这一步的主要目的是清除系统级别的错误,如果有系统级的错误,MooENV是不能继续安装的,在这里我默认你是在虚拟机装的MooENV,所以直接忽略掉。
      ./install.sh

      下面进入安装MooENV安装过程中的几个问题

      Do You Agree To The Terms Of This License? (Y/N)
      #这个必然选y

      === Which Integrate Environment You Want? ===
      1: L.N.M.P - Nginx/PHP-FastCGI/MySQL/NoSQL
      2: L.A.M.P - Apache/PHP/MySQL/NoSQL
      #按照你的喜好选择是Apache还是Nginx吧

      Do you want to change default YUM mirror to others? (y/n)
      #新系统我都选y,YUM升级下
      SELECT YUM MIRROR
      1. 163 - http://mirrors.163.com
      2. Sohu - http://mirrors.sohu.com
      3. Custom - Manually input URL
      Which YUM Mirror Do You Want To Use? (1/2/3):
      #这个我一般选择163的YUM镜像

      Do you want to perform a YUM update now? (y/n)
      #YUM是否立即升级,推荐升级下

      #然后就是一个依赖库安装的过程

      === Set MySQL root password ===
      *** Input password:
      #输入MySQL的root密码

      === Environment Backup Setting ===
      Do you want to add backup job to system cron? (Y/N)
      #是否添加自动备份

      === System Services Configuration ===
      Do you want Web Server start at boot time? (Y/N)
      #是否自动启动Nginx或是Apache
      Do you want MySQL Server start at boot time? (Y/N)
      #是否自动启动MySQL

      PHP安装完毕
      以后我们最常用到的目录就会是PHP的源码目录,可能是这样
      cd MooENV/src/php-5.3.8/ext/
      这篇文章的内容完毕了,下面上张图片,其实你可能已经看出来了,本文的重点是推荐MooENV,哈哈。

评论

  1. 13 年前
    2011-12-08 16:42:12

    史诗级坑爹巨制

  2. 13 年前
    2011-12-08 16:42:27

    你丫是禁止评论了么?

    • 博主
      Bighead
      13 年前
      2011-12-08 16:45:29

      评论审核后发表,不然垃圾广告太多了。

  3. kaka
    13 年前
    2011-12-09 11:39:42

    额。。。应该还有续篇吧。。。

    • 博主
      kaka
      13 年前
      2011-12-09 16:06:38

      确实还有续篇~

  4. 13 年前
    2011-12-14 15:21:30

    你的SAE可以支持独立域名?

    • 博主
      。潇
      13 年前
      2011-12-14 20:26:10

      查看这里,http://sae.sina.com.cn/?m=devcenter&content_id=36&catId=9

      • fantasy
        Kimi
        13 年前
        2011-12-16 12:10:37

        那你的域名也是在上面备的案??

        • 博主
          fantasy
          13 年前
          2011-12-16 18:24:20

          是之前,备案好了的

  5. clear
    11 年前
    2013-12-03 9:05:57

    PHP 版本可以选择或者更新么?

  6. clear
    11 年前
    2013-12-03 17:41:31

    Starting MySQL.The server quit without updating PID file (/usr/local/mysql/data/isa252.hxsd.local.pid). [失败]

    Install mysql-5.5.17-linux2.6-x86_64.tar.bz2 Failed!

  7. 11 年前
    2014-3-23 21:50:35

    本来是来看扩展开发的,意外收获一个MooENV。。。

  8. siffer
    11 年前
    2014-4-18 11:48:36

    MooENV Do Not Support Your OS Release.
    Please Install CentOS 5/6 On Your Server.

    不支持debian或者ubuntu吗?

  9. arvin
    10 年前
    2014-7-22 12:06:19

    没有中文介绍么我英文很烂啊, 博主C很厉害吧

  10. 好为
    10 年前
    2015-4-10 17:06:02

    我想请教一下你我在PHP扩展中遇到的问题,你了解 struct zend_arg_info 吗? 你知道如何获取 (zval*) 变量名称吗?
    可以直接这样获取吗? (zval *)->arg_info->name

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇