安装构建php环境

安装构建环境

现在你可能至少已经有一个已安装的php, 并且已经使用它做基于web的应用开发了. 你可能已经从php.net下载了win32构建并运行在iis或windows版的apache上, 或者使用你的*nix(linux, bsd, 或其他遵循POSIX的发行)发行版的包管理系统安装了第三方创建的二进制.

构建php

除非你是下载源码包自己编译, 否则你肯定会错过一些知识点.

*nix工具

C开发者工具集中必不可少的第一个工具是C的编译器. 你的发行版中可能会默认包含一个, 如果幸运, 它就是gcc(GNU编译器集合). 你可以通过执行gcc version或cc version检查是否安装了编译器, 如果已经安装, 它会响应已安装的编译器版本信息.

如果你还没有安装编译器, 可以按照你使用的发行版官方指定的方式下载并安装gcc. 通常这就意味着要下载一个.rpm或.deb文件, 并执行一个命令去安装它. 这依赖于你使用的发行版版本, 你可以简单的使用下面命令去尝试安装: urpmi gcc, apt-get install gcc, pkg-add -r gcc, emerge gcc.

除了编译器, 你还需要下面的程序和工具: make, autoconf, automake, libtool. 这些工具同样可以用你所使用的发行版的包管理系统去安装, 和安装gcc时一样, 或者直接从gnu.org下载源码包自己编译.

推荐的版本是: libtool 1.4.3, autoconf 2.13, automake 1.4或1.5. 使用这些软件的更新的版本可能也能很好的工作, 但这些版本是经过长期使用验证的.

如果你计划使用CVS检出最新的php开发版代码, 还需要bison和flex去构造语言解释器. 和其他包一样, 这两个包可以使用你的发行版包管理系统安装, 或者从gnu.org下载源码自己编译.

如果你选择了CVS, 你还需要安装cvs客户端. 同样, 它也可能已经在你的发行版上安装, 或者你自己去下载编译. 和其他包不一样的是这个包你需要在cvshome.org下载.

Win32工具

译者不熟悉windows环境, 因此略过.

获取php源代码

下载php的时候, 你有集中选择. 首先, 如果你的发行版支持, 你可以使用apt-get source php5这样的命令去下载. 这种方式的有点在于你使用的发行版可能存在某些问题需要对php源代码进行修改, 从这里下载, 可以肯定这些问题已经被打补丁使得你的构建存在更少的问题.缺点在于大多数的发行版都会比php官方的发布延迟数周.

另外一个选择是首选项, 在www.php.net下载php-x.y.z.tar.gz(x.y.z是当前发布版本).这些php发布版是经过全世界无数的php用户测试的, 并且是最新的.

你还可以从snaps.php.net下载快照包. 这个站点上, php版本库中所有源代码的最新版本会每隔几小时打包一次.php内核开发者的某些提交可能会导致它暂时不可用, 但是如果你在官方发布之前需要最新的php 6.0的特性, 这是最容易得到的地方.

最后, 你可以使用cvs直接获取到php内核开发团队所使用的开发版. 如果你只是要开发扩展和嵌入式程序, 相比使用官方发布包和获取快照,这不会有什么明显的好处. 但是如果你计划发布你的扩展或其他应用到CVS库, 熟悉检出过程还是很有用的.

译注: php目前已经使用git来管理代码库, 关于cvs检出不再赘述, 请访问https://github.com/php/php-src获取最新源码. 如果你想为php贡献代码, 可以查看该项目首页的介绍.

配置用于开发的php

第一章中我们讨论了, 无论你计划开发扩展还是潜入php的其他应用, 在构建开发者友好的php时有两个特殊的./configure开关你需要使用, 这两个开关应该和你构建php时使用的其他开关一起使用.

enable-debug

在php和zend源码树的某些关键函数上开启调试. 首先它启用了每个请求结束后的内存泄露报告.

回顾第三章"内存管理", ZendMM会隐式的释放每个请求分配的, 但在脚本结束之前没有被释放的内存. 通过在新开发的代码上运行一系列的回归测试用例, 泄露点可以很容易的暴露出来, 这样就可以在发布之间修补. 我们来看看下面的代码片段:

void show_value(int n)
{
    char *message = emalloc(1024);  

    sprintf(message, "The value of n is %d\n", n);
    php_printf("%s", message);
}

如果这段愚蠢的代码在php请求执行过程中被执行, 它将泄露1024字节的内存. 一般情况下ZendMM会在脚本执行结束后释放它.

在enable-debug开启时, 就会为开发者提供定位问题的错误消息:

/cvs/php5/ext/sample/sample.c(33) :  Freeing 0x084504B8 (1024 bytes), script=-
=== Total 1 memory leaks detected ===

这个短小但完整的消息告诉你ZendMM在你弄脏了内存后它进行了清理, 并给出了泄露的内存块是在哪里分配的. 使用这个信息, 很容易定位问题, 打开文件, 找到对应的行, 在函数结束前适当的位置增加efree(message).

当然, 内存泄露并不是你会碰到的唯一难以追查的问题. 有时候, 问题是潜在的, 很少显现. 比如你通宵达旦的工作, 修改了很多的代码和源文件, 当所有事情做完后, 你自信的执行了make, 测试了一个简单的脚本, 接着就看到了下面的输出:

$ sapi/cli/php -r 'myext_samplefunc();'
Segmentation Fault

这只是表象, 那问题出在哪里呢? 查看你的myext_samplefunc()实现, 并没有显示出什么明显的线索, 使用gdb运行仅显示出一串未知的符号.

同样, enable-debug会帮到你. 通过在./configure时增加这个开关, 结果的php二进制将包含所有gdb以及其他core文件检查程序所需的调试符号, 这样可以显示出问题出在哪里.

使用这个选项重新构建, 通过gdb触发崩溃, 你现在可以看到下面的输出:

#0 0x1234567 php_myext_find_delimiter(str=0x1234567 "foo@#(FHVN)@\x98\xE0...",
                                      strlen=3, tsrm_ls=0x1234567)
    p = strchr(str, ',');

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php
, 问题
, 编译器
, 安装编译器
, 代码
, 版本
, 其他
, clib内存泄露values
, php版
, 二进制发行版
, 安装包获取
, php获取内存
, php获取系统内存
php源代码安装
php环境一键安装包、php集成环境安装包、linux 安装php环境、安装php环境、ubuntu安装php环境,以便于您获取更多的相关知识。

时间: 2024-11-03 10:00:32

安装构建php环境的相关文章

Dreamweaver如何构建开发环境

在开发网站,特别是开发网络数据库之前,首先应该认真构建好 Dreamweaver MX 2004+ASP.NET 开发环境.本例将向读者介绍如何在 Windows XP SP2 操作系统下构建开发环境. 操作步骤 ( 1 )单击[开始]→[控制面板],如图 1-1 所示. 图 1-1 打开控制面板 ( 2 )在弹出的[控制面板]窗口中双击[添加或删除程序]按钮图标,在弹出的[添加或删除程序]对话框中选择安装 IIS 服务器,如图 1-2 所示.   ( 3 )安装好 IIS 服务器后,在[控制面

在没有安装Groovy的环境编译和打包Groovy脚本

在本文中将会涉及到: 使用 CliBuilder 来实现对命令行选项的支持,脚本执行时所需要的参数将通过命令行选项的方式传递. 使用 GroovyClassLoader 加载 Groovy class. 使用 AntBuilder 来构建 Jar 包. 开始之前 关于本文 也许您写了一些有趣或实用的 Groovy 脚本并希望与您的朋友分享,可是您并不想强迫他们安装 Groovy,所以您也许想要做一个小工具让您的朋友们能够用它编译您的 Groovy 脚本并且生成一个可执行的 Jar 包.本文将介绍

linux下安装构建Tripwire系统 利用Tripwire监测数据完整性 详细教程

前言 当服务器遭到黑客攻击时,在多数情况下,黑客可能对系统文件等等一些重要的文件进行修改.对此,我们用Tripwire建立数据完整性监测系统.虽然 它不能抵御黑客攻击以及黑客对一些重要文件的修改,但是可以监测文件是否被修改过以及哪些文件被修改过,从而在被攻击后有的放矢的策划出解决办法. Tripwire的原理是Tripwire被安装.配置后,将当前的系统数据状态建立成数据库,随着文件的添加.删除和修改等等变化,通过系统数据现状与不断更新的数据库进行比较,来判定哪些文件被添加.删除和修改过.正因为

《iOS9开发快速入门》——第1章,第1.2节构建开发环境—Xcode 7.0

1.2 构建开发环境-Xcode 7.0iOS9开发快速入门苹果公司在发布了最新的 iOS 9 系统后,又发布了最新的 Xcode 7.0.本节将主要讲解Xcode 7.0的安装.苹果账号的绑定和更新文件/组件等相关方面的内容. 1.2.1 安装Xcode 7.0Xcode 7.0可以从应用商店直接下载,并自动安装到计算机上.但是由于Xcode 7.0较大,直接从应用商店下载需要很长的时间.所以,很多时候大家都是从其他途径下载.这个时候,就需要手动进行安装.安装过程如下: (1)双击下载的Xco

ICON一款构建云计算环境中映像文件的软件工具

为了解决这些问题,Image Construction and Composition( 简称为 ICON) 应运而生.做为映像文件构建与编辑的工具,ICON 可以与云提供程序 (Cloud Provider) 集成,导入需要处理的影像文件,进行编辑,然后再同步到云环境中供http://www.aliyun.com/zixun/aggregation/6579.html">用户使用.通过本文,您可以了解 ICON 的安装和产品使用. Image Construction and Compo

运营之前先磨刀:构建网站环境

在策划和开发网站和网站的栏目的时候,作为日后的运营管理者,我认为有非常必要考虑这个问题--构建网站的环境.并且,如果有人问我,网站运营的第一步是什么,我会很坚决的告诉他:先别急着做推广,先做好内功,把自己的网站环境按照你的业务方向来整理一下吧. 通俗点说,网站的环境就是网站的气氛.是在给以后网站拥有的所有业务先磨刀的行为,可以说磨刀不误砍材功.一个好的网站环境,能够起到的作用恐怕要远远比表面的强大而重要. 再说俗一点,你的网站是一个姑娘,而网站环境就是你的内涵和修养,想嫁给心仪的男人,获得一生的

CssGaga安装配置:运行环境/下载/配置

文章简介:CssGaga安装配置:运行环境/下载/配置. 1. 安装Microsoft .NET Framework 3.5 下载 Microsoft .NET Framework 3.5 注:Windows Vista. Windows 7已集成 2. 下载CssGaga最新绿色版并解压到本地 CssGaga Download 3. 更改配置文件CssGaga.exe.config <!-- 本地路径 --> <add key="pathSource" value=

Appium移动自动化测试(二) 安装Android开发环境

继续Appium环境的搭建. 第二节  安装Android开发环境 如果你的环境是MAC那么可以直接跳过这一节.就像我们在用Selenium进行web自动化测试的时候一样,我们需要一个浏览器来执行测试脚本.那么移动端自动化测试,我们同样需要一部Android手机(手机需要链接电脑)或者Android模拟器. 安装java 环境 众所周知,Android是由Java语言开发的,所以想开发Android应用首先需要Java环境,所以,我们首先需要安装Java环境. java下载地址:http://w

solaris下的中文语言环境:如何显示系统中安装的语言环境

成为超级用户或同等角色. 角色包含授权和具有一定权限的命令. 使用 localeadm 命令显示系统中当前安装的语言环境.-l 选项显示系统中安装的语言环境.例如: # localeadm -l Checking for installed pkgs. This could take a while. Checking for Australasia region (aua) (1of2 pkgs) |......| . . . The following regions are install