解压即用,跨Linux发行版PHP7打包

适用环境: 64位Linux

下载地址(18MB):
http://pan.baidu.com/s/1ntsrU8x

md5sum php-7.0.0-dev-20150502.tar.xz

5a4897aedc5ccf02da1f0340ac6013cb

PHP版本是7.0.0开发版,2015年5月2日从Github下载的代码.

https://github.com/php/php-src/archive/master.zip

创建用户:

sudo groupadd -r png

sudo useradd -r -g png -s /usr/sbin/nologin -d /png/nonexistent -c "png user" png

创建目录设置权限并解压:

sudo mkdir /png && sudo chown $USER:$USER /png

tar xJf php-7.0.0-dev-20150502.tar.xz -C /

测试:

/png/php/7.0.0-dev/bin/php -v

/png/php/7.0.0-dev/bin/php-cgi -v

/png/php/7.0.0-dev/sbin/php-fpm -v

我是在64位Ubuntu14.04上编译打包的PHP7,下面的截图是跑在CentOS7下的PHP7.

附: 跨Linux发行版PHP打包方法

环境: 64位Ubuntu14.04

安装编译PHP依赖的开发工具和库:

sudo apt-get install
build-essential
autoconf
libtool
re2c
libxml2-dev
openssl
libcurl4-openssl-dev
libbz2-dev
libjpeg-dev
libpng12-dev
libfreetype6-dev
libldap2-dev
libmcrypt-dev
libmysqlclient-dev
libxslt1-dev
libxt-dev
libpcre3-dev
libxpm-dev
libt1-dev
libgmp-dev
libpspell-dev
librecode-dev

sudo ln -s /usr/lib/`arch`-linux-gnu/libldap.so /usr/lib/

sudo ln -s /usr/lib/`arch`-linux-gnu/liblber.so /usr/lib/

sudo ln -s /usr/include/`arch`-linux-gnu/gmp.h /usr/include/gmp.h

wget -O php-7.0.0-dev.zip https://github.com/php/php-src/archive/master.zip

./buildconf 生成configure文件.

export CFLAGS="-O3" 开启O3编译优化,生成的可执行文件更小,性能更高.

./configure_php.sh 执行configure,脚本内容在下方.

sudo mkdir /png && sudo chown $USER:$USER /png

make && make install 编译和安装PHP.

配置文件:

cp /png/src/php-7.0.0-dev-20150502/php.ini-* /png/php/7.0.0-dev/lib/

cp /png/php/7.0.0-dev/lib/php.ini-production /png/php/7.0.0-dev/lib/php.ini

cp /png/php/7.0.0-dev/etc/php-fpm.conf.default /png/php/7.0.0-dev/etc/php-fpm.conf

cp /png/php/7.0.0-dev/etc/php-fpm.d/www.conf.default /png/php/7.0.0-dev/etc/php-fpm.d/www.conf

PHP-FPM服务管理脚本:

cp /png/src/php-7.0.0-dev-20150502/sapi/fpm/init.d.php-fpm /png/php/7.0.0-dev/png-fpm

cp /png/src/php-7.0.0-dev-20150502/sapi/fpm/php-fpm.service /png/php/7.0.0-dev/

init.d.php-fpm是传统的init服务脚本,php-fpm.service则是systemd的服务脚本.

configure_php.sh

#!/bin/bash

./configure
--prefix=/png/php/7.0.0-dev
--enable-opcache
--enable-fpm
--enable-pdo
--enable-sockets
--enable-exif
--enable-soap
--enable-ftp
--enable-wddx
--enable-pcntl
--enable-soap
--enable-bcmath
--enable-mbstring
--enable-dba
--enable-gd-native-ttf
--enable-gd-jis-conv
--enable-zip
--enable-calendar
--enable-shmop
--enable-sysvmsg
--enable-sysvsem
--enable-sysvshm
--with-mysqli
--with-pdo-mysql
--with-pdo-sqlite
--with-iconv
--with-gmp
--with-pspell
--with-gettext
--with-xmlrpc
--with-openssl
--with-mhash
--with-mcrypt
--with-xsl
--with-curl
--with-pcre-regex
--with-gd
--with-jpeg-dir=/usr
--with-png-dir=/usr
--with-zlib-dir=/usr
--with-xpm-dir=/usr
--with-freetype-dir=/usr
--with-t1lib=/usr
--with-gettext=/usr
--with-zlib=/usr
--with-bz2=/usr
--with-recode=/usr
--with-ldap
--with-pear
--with-readline
--with-fpm-user=png
--with-fpm-group=png
--with-apxs2=/png/httpd/2.4.12P/bin/apxs

要使PHP跨Linux发行版,那就需要找出PHP依赖的共享库随PHP打包,脚本pack.sh如下:

事先创建好/png/pack/libs和/png/pack/backup这些目录.

pack.sh

#!/bin/bash

#运行 cd /png/pack && ./pack.sh

PHP=/png/php/7.0.0-dev

#备份原有文件

tar czf /png/pack/backup/php.tgz $PHP

#找出二进制和共享库

PHP_BIN_LIB="$(find $PHP -type f -exec file -i ‘{}‘ \; | egrep ‘x-executable; charset=binary|x-sharedlib; charset=binary‘ | awk -F ": " ‘{print $1}‘)"

echo "$PHP_BIN_LIB" > bin_lib.txt

#复制库链接器

cp /lib64/ld-linux-x86-64.so.2 /png/pack/libs

#复制依赖库.

for i in `cat bin_lib.txt`; do

for j in $i; do

list="$(ldd $j | awk -F " " ‘{print $3}‘|grep ‘.so‘)"

for k in $list; do

cp -n "$k" /png/pack/libs

done

done

done

#设置二进制和共享库的rpath和interpreter

for i in `cat bin_lib.txt`; do

/png/pack/patchelf --set-rpath /png/pack/libs --force-rpath $i

/png/pack/patchelf --set-interpreter /png/pack/libs/ld-linux-x86-64.so.2 $i

done

#打包库和修改后的程序

tar cJf /png/pack/png.tar.xz /png/pack/libs $PHP

时间: 2024-12-26 06:49:04

解压即用,跨Linux发行版PHP7打包的相关文章

跨发行版应用打包格式 Flatpak 发布

关于Linux的学习,请查看书籍<Linux就该这么学> GNOME 项目组的 Allan Day 正式发布了 Flatpak,这并不是我们第一次提及 Flatpak,你可能已经知道它是一个无依赖关系的.跨发行版的软件打包框架,它可以让用户在多个基于 Linux 内核的操作系统上使用各种桌面应用程序.有些人可能记得 Flatpak 之前的名字叫做 XDG-App,Flatpak 是应 GNU/Linux 和开源软件开发者所需而出现的,可以让他们在多个桌面平台.操作系统上发行软件时,不用花费几个

简单移植deepin的wine软件包到其他linux发行版

简单移植deepin的wine软件包到其他linux发行版:(不能直接安装的情况下) 因为是deepin的软件包所以难免会有一些依赖问题,我们只需要去掉这些依赖就可以安装了.所以我们需要对软件包进行修改.但由于依赖问题,所以部分软件并不能完美运行. 1.安装dpkg 这个软件包估计都是安装过得 要是没有安装的可以通过指令或新立得安装 执行代码 sudo apt-get install dpkg 2.修改deepin的wine软件包 a.获取deepin的wine软件包,可以通过一下网址得到.(请

使用 Yocto Project 构建自定义嵌入式 Linux 发行版

概述 Yocto Project 是一个开源协作项目,它提供了一些模板.工具和方法来支持面向嵌入式产品的自定义 Linux 系统,不管硬件架构是什么.我想要告诉那些对 yocto 这个名称不甚理解的用户的是,术语 yocto是最小的 SI 单元.最为一个前缀,yocto 表示 10^-24. 本文将提供一个分步指导,向您介绍如何使用 Yocto Project 的行业标准开源工具为嵌入式设备创建自定义的 Linux 操作系统,并使用 QEMU 在一台虚拟机中启动操作系统.Yocto Projec

最简单的斐讯p1(斐讯n1)电视盒子刷centos7系统(其他linux发行版如armbian也行)教程,对盒子内的安卓系统改动最小

通过多日的对斐讯p1(斐讯n1)电视盒子的研究,以及参考了恩山论坛和一些技术博客的现有教程,总结了一个对新买的斐讯p1(斐讯n1)电视盒子刷centos7系统(其他linux发行版如armbian也行)的教程.个人认为此教程相比其他教程,去除了一些不需要的步骤,降低了刷机的安全风险,对盒子内的安卓系统改动最小,且步骤安排合理. 一.硬件和软件准备及教程总览 硬件工具 斐讯p1(斐讯n1)电视盒子一台 电脑一台(用于远程连接斐讯盒子和usb连接斐讯盒子) 家里的hdmi显示屏一块(用于为斐讯盒子开

最小 Linux 发行版 Tiny Core Linux 7.1 发布

Tiny Core Linux 是一个极度简约但是也高度可扩展的 GNU/Linux 发行版,其之精简甚至可以小到只有 10MB 大小.昨天 5月23日刚刚发布的 Tiny Core Linux 7.1 也仅仅只有区区 11.7 MB 大小而已,体积之小实在令人叹为观止,要知道普通的 Ubuntu 也好,Debian 也好, 动辄就是800MB-4700MB,一张光碟装不下是时常的事儿.今天我们将带你看看最小Linux发行版的神奇魅力! 然而麻雀虽小五脏俱全,“高大强”不代表武功盖世,“矮小瘦”

极度简约 最小 Linux 发行版 Tiny Core Linux 7.1 发布

感谢Linux Story的投递 Tiny Core Linux 是一个极度简约但是也高度可扩展的 GNU/Linux 发行版,其之精简甚至可以小到只有 10MB 大小,昨天 5月23日刚刚发布的 Tiny Core Linux 7.1 也仅仅只有区区 11.7 MB 大小而已,体积之小实在令人叹为观止,要知道普通的 Ubuntu 也好,Debian 也好, 动辄就是800MB-4700MB,一张光碟装不下是时常的事儿. 然而麻雀虽小五脏俱全,“高大强”不代表武功盖世,“矮小瘦”不见得水平低劣.

描述Linux发行版的系统目录名称命名规则以及用途

1.描述Linux发行版的系统目录名称命名规则以及用途. 目录命名规则:(1)文件名最长255个字节(2)包括路径在内文件名称最长4095个字节(3)除了斜杠和NUL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用它们(4)标准Linux文件系统(如ext4),文件名称大小写敏感系统目录名称及用途 [[email protected] /]# tree -d -L 1 // ├── bin -> usr/bin //所有用户使用的基本命令:不能关联至独立分区,O

Linux发行版介绍

主流发行版: RedHat系列    出现的很早的一个版本,但似乎商业意味越来越浓,很多人说7不好用,很多人说RHCE是鸡肋.个人感觉6.x的版本还是很好用的.Fedora很多年不用了.下个项目正在准备使用Oracle Linux搭建vSphere上的RAC集群. 衍生版本 Centos RHEL Fedora Oracle Linux Debian系列    最喜欢的发行版,小巧稳定,一个版本通杀桌面和服务器领域.完整的软件仓库是最爱. 衍生版本 Ubuntu Mint Knoppix Sla

2016年最佳Linux发行版排行榜

2015年,不管在企业市场还是个人消费市场都是 Linux 非常重要的一年. 最好的回归发行版:openSUSE openSUSE 背后的 SUSE 公司是最老的 Linux 企业,它成立于 Linus Torvalds 宣布放出 Linux 的一年后.它其实早于 Red Hat 的诞生,它也是社区主导的发行版 openSUSE 的赞助商. 在2015,openSUSE 团队决定靠拢 SUSE Linux 企业版(SLE)以便用户可以共享企业服务版本的 DNA ,就像 CentOS 和 Ubun