Compiling PHP 5.6.x

#See https://adrhc.go.ro/wordpress/common-commands-when-building/ for building environment, x.sh script and other things not defined here.
#Before starting do declare the environment variables specified to the link above.

NEW_BUILD_NAME=php
NEW_BUILD_VER1=5.6.13
NEW_BUILD_VER=$NEW_BUILD_VER1-zts
MYSQL_BUILD_NAME_AND_VER=mysql-5.6.25
NEW_BUILD_NAME_AND_VER=$NEW_BUILD_NAME-$MYSQL_BUILD_NAME_AND_VER-$NEW_BUILD_VER
ls -l /tmp/$NEW_BUILD_NAME-*
ls -l ~/ffp_0.7_armv5/packages/$NEW_BUILD_NAME-*
NEW_BUILD_NR=0

cd ~/compile
wget -O $NEW_BUILD_NAME_AND_VER.tar.gz http://ro1.php.net/get/php-$NEW_BUILD_VER1.tar.gz/from/this/mirror
tar -xzf $NEW_BUILD_NAME-$NEW_BUILD_VER1.tar.gz
mv $NEW_BUILD_NAME-$NEW_BUILD_VER1 $NEW_BUILD_NAME_AND_VER
cd ~/compile/$NEW_BUILD_NAME_AND_VER
nohup ~/x.sh ffpg &
tail -f nohup.out
cp -r . ../$NEW_BUILD_NAME_AND_VER+ffpg
  
#REINSTALL (start from here when reinstalling)
cd ~/compile
rm -r ~/compile/$NEW_BUILD_NAME_AND_VER
cp -r ~/compile/$NEW_BUILD_NAME_AND_VER+ffpg ~/compile/$NEW_BUILD_NAME_AND_VER
cd ~/compile/$NEW_BUILD_NAME_AND_VER
 
./configure --help > configure.help.txt
cat configure.help.txt
 
ERROR0:
    don't know how to define struct flock on this system ... set --enable-opcache=no
SOLUTION0:
    funpkg -r libgd-2.1.0-arm-0
 
#When using --with-apxs2=/ffp/opt/apache-2.2.9-prefork/bin/apxs we'll get php-non-ZTS!
#When using --with-apxs2=/ffp/opt/apache-2.2.29-worker/bin/apxs we'll get php-ZTS!
#--with-recode -> couldn't build it for the moment
#--with-tidy -> too old, makes no sense to use it
#--without-sqlite3=/ffp -> doesn't work (stupid option)
#--enable-mysqlnd -> I don't use it
#--enable-dba=shared -> somehow disables mysqli

sed -i s/"HAVE_GD_XPM\s1"/"HAVE_GD_XPM 0"/g configure
sed -i s/"lxmlrpc\s"/"lxmlrpc-epi "/g configure

./configure --prefix=/ffp --enable-re2c-cgoto=shared,/ffp --with-apxs2=/ffp/opt/apache-2.2.29-worker/bin/apxs --enable-fpm --with-config-file-path=/ffp/etc/php.ini --with-config-file-scan-dir=/ffp/etc --with-libxml-dir=/ffp --with-openssl=shared,/ffp --with-pcre-regex=/ffp --with-zlib=shared,/ffp --enable-bcmath --with-bz2=shared,/ffp --enable-calendar --with-curl=shared,/ffp --with-enchant=shared,/ffp --enable-exif --enable-ftp --with-gd=shared,/ffp --with-jpeg-dir=/ffp --with-png-dir=/ffp --with-freetype-dir=/ffp --enable-gd-native-ttf --enable-gd-jis-conv --with-gettext=shared,/ffp --with-gmp=shared,/ffp --with-mhash=shared,/ffp --enable-intl --with-icu-dir=/ffp --enable-mbstring --with-mcrypt=shared,/ffp --with-mysql=shared,/ffp --with-mysql-sock=/ffp/var/run/mysql/mysql.sock --with-mysqli=shared,/ffp/bin/mysql_config --enable-opcache --enable-pcntl --with-pdo-mysql=shared,/ffp --with-readline=shared,/ffp --enable-shmop --enable-soap --enable-sockets --enable-wddx --with-libexpat-dir=/ffp --with-xmlrpc=shared,/ffp --with-iconv=shared,/ffp --with-xsl=/ffp --enable-zip --with-pear --with-pcre-dir=/ffp --with-openssl-dir=/ffp --with-zlib-dir=/ffp --with-iconv-dir=/ffp

sed -i s/"lxmlrpc\s"/"lxmlrpc-epi "/g Makefile
sed -i s/"define\sHAVE_GD_XPM\s0"/"undef HAVE_GD_XPM"/g main/php_config.h

#make
nohup make -C . &
renice -11 `pidof cc1plus` -p `pidof make` -p `pidof as` -p `pidof ld` -p `pidof configure` -p `pidof cc1`
tail -f nohup.out
#tests
nohup make test &

#INSTALL
rm -r $HOME/temp/$NEW_BUILD_NAME_AND_VER
mkdir -p $HOME/temp/$NEW_BUILD_NAME_AND_VER/ffp/opt/apache-2.2.29-worker/conf/
cp -v /ffp/opt/apache-2.2.29-worker/conf/httpd.conf $HOME/temp/$NEW_BUILD_NAME_AND_VER/ffp/opt/apache-2.2.29-worker/conf/
INSTALL_ROOT=$HOME/temp/$NEW_BUILD_NAME_AND_VER make install
#if after make you are asked for running 'libtool --finish ...' then do it:
libtool --finish libs
#You'll get something like this:
#Libraries have been installed in:
#   /ffp/home/root/compile/$NEW_BUILD_NAME_AND_VER/libs -> here you'll find libphp5.so and libphp5.la
rm -vr $HOME/temp/$NEW_BUILD_NAME_AND_VER/ffp/opt/apache-2.2.29-worker/conf/
cd $HOME/temp/$NEW_BUILD_NAME_AND_VER
ls -l /tmp/php-*
ls -l ~/ffp_0.7_armv5/packages/php-*
#for the files found below remove the -n or/and -q php's call options:
grep -nr "\s\(-q\|-n\)\s" ffp/bin/
sed -i s/"\s-q"/""/ ffp/bin/peardev
sed -i s/"\s-q"/""/ ffp/bin/pear
sed -i s/"\s-q"/""/ ffp/bin/pecl
sed -i s/"\s-n"/""/ ffp/bin/pecl
sed -i s/"\!\/bin"/"\!\/ffp\/bin"/ ffp/bin/pecl
sed -i s/"\!\/bin"/"\!\/ffp\/bin"/ ffp/bin/pear
sed -i s/"\!\/bin"/"\!\/ffp\/bin"/ ffp/bin/peardev
makepkg $NEW_BUILD_NAME-$MYSQL_BUILD_NAME_AND_VER $NEW_BUILD_VER 0
cp -v /tmp/php-*.txz $HOME/ffp_0.7_armv5/packages/
funpkg -i $HOME/ffp_0.7_armv5/packages/$NEW_BUILD_NAME_AND_VER-arm-0.txz
 
#AFTER INSTALL
#INSTALL PEAR & PECL
wget http://pear.php.net/go-pear.phar
#go-pear.phar installs also pecl
php go-pear.phar
#ERROR (when running go-pear.phar)
	SHA1 signature could not be verified: broken signature
#SOLUTION
	Don't modify go-pear.phar with "~/x.sh ffpg" command!!!
	Configure php.ini: phar.require_hash = Off.
	Execute with specific php.ini:
	php -c /ffp/etc/php.ini go-pear.phar

#Modify the following /ffp/bin/ files: pear, peardev, pecl, pecl-gen:
##!/bin/sh -> #!/ffp/bin/sh

#USING PECL: https://adrhc.go.ro/wordpress/using-pecl/
#USING PEAR: https://adrhc.go.ro/wordpress/using-pear/

#ERROR (make)
	PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled.
#SOLUTION (do it after installing pear)
	A part of the solution is to at least install PEAR package PHP_Archive.
	PHP_Archive is required for running phar files (see http://php.net/manual/en/intro.phar.php).

#My personal setup:
pecl channel-update pecl.php.net
pear install --alldeps PHP_Archive-0.11.4
pecl install --alldeps --force APCu-4.0.7
pecl install --alldeps msgpack-0.5.6
pecl install --alldeps --force pthreads-2.0.10

#INSTALL APCu manually (compile or use https://adrhc.go.ro/wordpress/using-pecl/)
cd ~/compile
wget http://pecl.php.net/get/apcu-4.0.7.tgz
tar zxfv apcu-4.0.7.tgz
cd ~/compile/apcu-4.0.7
phpize
./configure --with-php-config=/ffp/bin/php-config --enable-apcu
make install

#dezactiveaza autentificarea in ~/compile/apcu-4.0.7/apc.php: defaults('USE_AUTHENTICATION',0)
#Nu copia apc.php in /i-data/60cb70cf/www/pages/wordpress/wp-content/plugins/wp-apc-panel/include/ pt ca deja exista!
cp -v ~/compile/apcu-4.0.7/apc.php $HOME/tools/

#show php modules
php -m
 
#Using php5_module with Apache:
LoadModule php5_module /usr/local/zy-pkgs/lib/libphp5.so
Link required: /usr/local/zy-pkgs/php/php.ini -> /ffp/etc/php.ini
PHPIniDir /usr/local/zy-pkgs/php
AddHandler php5-script .php
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.