PHP8尝试
编译xml
依赖automake 高版本
automake-1.16.3
./configure
make
make install
automake --version
安装python2.7-dev
apt-get install python2.7-dev
需要pgk依赖
find / -name "pkg.m4"
export ACLOCAL_PATH=/usr/share/aclocal
添加libsqlite3
find / -name libsqlite3.so
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH
./autogen.sh
./configure --prefix=/home/zfadmin/xml2_v211/arm --without-python --without-zlib --host=arm-linux-gnueabihf
php:
编译php必要加 --enable-session,不然没有办法调用redis
编译完xml后需要在命令行中设置LDFLAGS 变量: export LDFLAGS="-L/home/zfadmin/xml2_v211/arm/lib"
./configure --prefix=/home/zfadmin/php825/arm --host=arm-linux-gnueabihf --enable-session --with-libxml=/home/zfadmin/xml2_v211/arm --without-sqlite3 --disable-all
尝试解决libphp8.so
./configure --prefix=/home/zfadmin/php825/arm2 --with-apxs2=/home/zfadmin/httpdCompile/arm/bin/apxs --host=arm-linux-gnueabihf --enable-session --with-libxml=/home/zfadmin/xml2_v211/arm --without-sqlite3 --disable-all
尝试解决mysqli
先手动交叉编译zlib
export CC=arm-linux-gnueabihf-gcc
export AR=arm-linux-gnueabihf-ar
export RANLIB=arm-linux-gnueabihf-ranlib
export LD=arm-linux-gnueabihf-ld
CPPFLAGS="-fPIC" ./configure --prefix=/home/zfadmin/php825/zlib/arm2 --static
export CPPFLAGS="-I/home/zfadmin/php825/zlib/arm/include"
export LDFLAGS="-L/home/zfadmin/xml2_v211/arm/lib -L/home/zfadmin/php825/zlib/arm/lib"
手动交叉编译sqlite3
./configure CC=arm-linux-gnueabihf-gcc --host=arm-linux-gnueabihf --prefix=/home/zfadmin/php825/sqllit3/arm
编译php
export CPPFLAGS="-I/home/zfadmin/php825/zlib/arm3/include -I/home/zfadmin/php825/sqllit3/arm/include"
export LDFLAGS="-L/home/zfadmin/xml2_v211/arm/lib -L/home/zfadmin/php825/zlib/arm3/lib -L/home/zfadmin/php825/sqllit3/arm/lib"
第一次
./configure --prefix=/home/zfadmin/php825/arm3 --with-apxs2=/home/zfadmin/httpdCompile/arm3/bin/apxs --host=arm-linux-gnueabihf --enable-session --with-libxml=/home/zfadmin/xml2_v211/arm --with-mysqli --with-sqlite3=/home/zfadmin/php825/sqllit3/arm --with-zlib=/home/zfadmin/php825/zlib/arm3 --disable-phar --without-pear
第二次
./configure --prefix=/home/zfadmin/php825/arm4 --with-apxs2=/home/zfadmin/httpdCompile/arm3/bin/apxs --host=arm-linux-gnueabihf --enable-session --with-libxml=/home/zfadmin/xml2_v211/arm --with-mysqli --without-sqlite3 --with-zlib=/home/zfadmin/php825/zlib/arm3 --disable-phar --without-pear
编译mysqli.so
cd ./ext/mysqli
/home/zfadmin/php825/arm4/bin/phpize
CC=arm-linux-gnueabihf-gcc ./configure --with-php-config=/home/zfadmin/php825/arm4/bin/php-config --with-mysqli=mysqlnd --host=arm-linux-gnueabihf
phpredis:
cd /home/zfadmin/phpredis537/redis-5.3.7/redis-5.3.7
make clean; make disclean;
/home/zfadmin/php825/arm4/bin/phpize
CC=arm-linux-gnueabihf-gcc ./configure --with-php-config=/home/zfadmin/php825/arm4/bin/php-config --host=arm-linux-gnueabihf --enable-redis
编译php的sockets
--enable-sockets
在Arm板上需要将php.ini路径加入到环境变量
export PHP_INI_SCAN_DIR=/opt/web/php-8.2.5-armv7/lib
编译apache 2.4.57
编译pcre2源码并安装
./configure --prefix=/home/zfadmin/httpdCompile/pcre2_arm --host=arm-linux-gnueabihf
需要下载apr和apr-ultra放到srclib下,注意拷贝过去不能带版本号
遇到run test的编译错误就把configure目录下的run test段落注释掉就行,一共有3处
需要编译 pcre2
需要编译安装 libexpat
需要编译openssl 1.1.1
./Configure --prefix=/home/zfadmin/httpdCompile/opensslArm/ linux-elf no-shared shared no-zlib no-asm no-threads no-sse2 no-rfc3779 no-rc5 no-zlib-dynamic no-hw no-md2 no-mdc2 no-rc2 no-idea no-camellia no-ec no-ripemd no-bf no-cast --cross-compile-prefix=arm-linux-gnueabihf-
安装apache
--enable-so选项可以使接下来编译php8可指定apxs目录,如不用php可不加
如果php8没有编译成线程安全的版本则需要--with-mpm=prefork --enable-mpms-shared=all
CFLAGS="-pthread" CXXFLAGS="-pthread" ./configure --with-expat=/home/zfadmin/httpdCompile/expatArm --with-mpm=prefork --enable-mpms-shared=all --enable-so --with-ssl=/home/zfadmin/httpdCompile/opensslArm --prefix=/home/zfadmin/httpdCompile/arm CC=arm-linux-gnueabihf-gcc --host=arm-linux-gnueabihf --with-pcre=/home/zfadmin/httpdCompile/pcre2_arm/bin/pcre2-config --with-included-apr ac_cv_file__dev_zero=yes ac_cv_func_setpgrp_void=yes ap_cv_void_ptr_lt_long=no ac_cv_struct_rlimit=yes
提示gen_test_char
进入到/home/zfadmin/httpdCompile/httpd-2.4.57/server 目录
执行gcc -Wall -O2 -DCROSS_COMPILE gen_test_char.c -s -o gen_test_char
再执行./gen_test_char > test_char.h
然后继续make
Action application/x-httpd-php "/opt/web/php-8.2.5-armv7/bin/php-cgi"
先编译apache,才能再编译php8,因为php8在编译的时候需要指定--with-apxs2=/home/zfadmin/httpdCompile/arm/bin/apxs的目录才行,注意要么把php8编译成线程安全的,要么编译出来一个单线程的apache
出现AH00534: httpd: Configuration error: More than one MPM loaded
在httpd.conf中加上Include conf/extra/httpd-mpm.conf。httpd.conf中不加任何mpm模块
在httpd-mpm.conf 中只保留关于 mpm_prefork_module的一小段,其余全部注释
./httpd -f /opt/web/apache-2.4.57-armv7/conf/httpd.conf
export LD_LIBRARY_PATH=/usr/local/qt-4.8.6/plugins
export LD_LIBRARY_PATH=/usr/local/qt-4.8.6/lib
提示找不到QMYSQL驱动,需要把mysql客户端安装路径下的lib依赖环境设置到/etc/profile中