欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

1、配置PHP构建环境

程序员文章站 2022-07-05 16:03:03
...

女主宣言

今天小编为大家分享编写PHP扩展的系列文章,文章从环境构建到扩展编写,会对使用到的相关PHP内核数据结构及API进行介绍,希望能对大家有所帮助。

PS:丰富的一线技术、多元化的表现形式,尽在“360云计算”,点关注哦!

众所周知PHP语言是由C语言编写,我们今天介绍的PHP扩展也是由C语言来进行开发的。所以在编写PHP扩展时,就需要考虑内存管理、数组边界以及其他底层语言的相关问题。因此,在编写PHP扩展时,很难说不会产生任何错误,所以就需要进行相应的调试。所以我们建议在Linux环境下,创建一个“DEBUG”的PHP构建环境,有助于更早的发现相关问题。

基于Linux从源码构建PHP也不会太复杂。但是,首先需要安装必要的开发组件,其中包括C编译器、链接器、库以及头文件。我们使用Linux的包管理器来进行操作。

Ubuntu/Debian环境:

$ sudo apt-get install build-essential autoconf automake bison flex re2c gdb \
    libtool make pkgconf valgrind git libxml2-dev libsqlite3-dev

RedHat/Fedora环境:

$ sudo dnf install gcc gcc-c++ binutils glibc-devel autoconf automake bison \
    flex re2c gdb libtool make pkgconf valgrind git \
    libxml2-devel libsqlite3x-devel

现在,我们可以从github克隆PHP GIT库,然后切换到所需的PHP版本(默认使用master分支或新版的PHP 8)。

$ git clone https://github.com/php/php-src.git
$ cd php-src
$ git checkout php-7.4.1 (switch to tag/branch of necessary PHP version)

接下来,配置PHP。我们将构建一个“DEBUG”版本的PHP,安装到home目录并且使用自定义的php.ini配置文件。“./configure”命令可以使用附近选项扩展,具体取决于你的PHP构建需求。可以指定:

  • 使用哪种SAPI(CLI、FastCGI、FPM、Apache)

  • 启用或禁用嵌入式PHP扩展及其选项

想要获取完整的配置选项,可以执行“./configure -help”查看。

$ ./buildconf --force
$ ./configure --enable-debug \
    --prefix=$HOME/php-bin/DEBUG \
    --with-config-file-path=$HOME/php-bin/DEBUG/etc

通常,需要与现有已安装版本进行相似的构建配置。为了节省时间,可以使用“php -i | grep ‘Configure Command’”获取现有构建的配置选项,并添加到“./configure”命令中。注意,构建一些PHP扩展可能需要安装其他库或者头文件,通常在此步骤中检查所有程序包依赖项。

最后,当configure成功时,编译并安装PHP构建:

$ make -j4
$ make install
$ cd ..

现在我们需要创建自定义的php.ini:

$ mkdir ~/php-bin/DEBUG/etc
$ vi ~/php-bin/DEBUG/etc/php.ini

应包含以下内容,启用错误报告并尽早发现可能的错误:

date.timezone="Asia/Shanghai"
max_execution_time=30
memory_limit=128M

error_reporting=E_ALL | E_STRICT ; catch all error and warnings
display_errors=1
log_errors=1

zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1
opcache.protect_memory=1      ; catch invalid updates of shared memory

将PHP添加到PATH环境变量中,覆盖系统中的PHP:

$ export PATH=~/php-bin/DEBUG/bin:$PATH

检查是否一切正常:

$ php -v

输出类似以下内容:

PHP 7.4.1 (cli) (built: Jan 15 2020 12:52:43) ( NTS DEBUG )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.1, Copyright (c), by Zend Technologies

“DEBUG”PHP构建已准备好,下一步进行开发。

如果大家有什么建议或疑问,可以在下方留言交流。

360云计算

由360云平台团队打造的技术分享公众号,内容涉及数据库、大数据、微服务、容器、AIOps、IoT等众多技术领域,通过夯实的技术积累和丰富的一线实战经验,为你带来最有料的技术分享

1、配置PHP构建环境