Remove all php on FreeBSD 10

Just quick note for my self. New php application use php 5.3+ and FreeBSD box have php 5.2 installed.

# pkg info | grep php
php52-5.2.17_15                PHP Scripting Language
php52-ctype-5.2.17_15          The ctype shared extension for php
php52-curl-5.2.17_15           The curl shared extension for php
php52-dom-5.2.17_15            The dom shared extension for php
php52-filter-5.2.17_15         The filter shared extension for php
php52-pcre-5.2.17_15           The pcre shared extension for php
php52-simplexml-5.2.17_15      The simplexml shared extension for php
php52-spl-5.2.17_15            The spl shared extension for php

Remove all php package (php 5.2) :

# pkg delete -x php
Deinstallation has been requested for the following 8 packages:


The deinstallation will free 8 MB

Proceed with deinstalling packages [y/N]: y
[1/8] Deleting php52-ctype-5.2.17_15… done
[2/8] Deleting php52-curl-5.2.17_15… done
[3/8] Deleting php52-dom-5.2.17_15… done
[4/8] Deleting php52-filter-5.2.17_15… done
[5/8] Deleting php52-spl-5.2.17_15… done
[6/8] Deleting php52-pcre-5.2.17_15… done
[7/8] Deleting php52-simplexml-5.2.17_15… done
[8/8] Deleting php52-5.2.17_15…[preparing module `php5′ in /usr/local/etc/apache22/httpd.conf]

# pkg info
apache22-2.2.26                Version 2.2.x of Apache web server with prefork MPM.
apr-                Apache Portability Library
autoconf-2.69                  Automatically configure source code on many Un*x platforms
autoconf-wrapper-20131203      Wrapper script for GNU autoconf
ca_root_nss-           The root certificate bundle from the Mozilla Project
curl-7.33.0_1                  Non-interactive tool to get files from FTP, GOPHER, HTTP(S) servers
db42-4.2.52_5                  The Berkeley DB package, revision 4.2
dialog4ports-0.1.5_2           Console Interface to configure ports
expat-2.1.0                    XML 1.0 parser written in C
freetype2-              Free and portable TrueType font rendering engine
gdbm-1.10                      GNU database manager
gettext-               GNU gettext package
gmake-3.82_1                   GNU version of ‘make’ utility
help2man-1.43.3_1              Automatically generating simple manual pages from program output
libtool-2.4.2_2                Generic shared library support script
libxml2-2.8.0_3                XML parser library for GNOME
m4-1.4.17,1                    GNU m4
p5-Locale-gettext-1.05_3       Message handling functions
pcre-8.33                      Perl Compatible Regular Expressions library
perl5-5.16.3_4                 Practical Extraction and Report Language
pkg-1.2.4_1                    New generation package manager
pkgconf-0.9.3                  Utility to help to configure compiler and linker flags


Using multiple php inside one Ubuntu machine

programmer plus gamerAnother challenge came. One of our application finally updated. The application development use php 5.3 + and already pass with php 5.5+ version. Time for migration schedule and the requirement is obvious : the machine able to run 2 different php (php 5.2.17 is a must and other php version is at least 5.3+). The machine I use is Ubuntu 12.04 32 bit ( I prefer to use old supported version due to lower memory consumption than 14.04).

Quick google give me reference to phpfarm and other resources. As I said in previous post, php 5.2.17 successfully installed after applied a patch (installed on Ubuntu 14.04). For reference purpose I share my experience here. Target php extensions are standard like support for mysql, pdo and gd extension.

Note : if you want to to try / apply it using vps then You’ll need memory minimal 1GB. My box show this memory utilization (32 bit). Click here for hourly cheap vps.

# free -m
total       used       free     shared    buffers     cached
Mem:           873        786         87          0         78        569
-/+ buffers/cache:        138        734
Swap:          890          0        890

Disable php5 module (optional)

In case you already install php5 as apache module you must disable it first.

#a2dismod php5

Fixing locale

Locale error are pop up everywhere first time I install. I need to get rid from this error.

# locale

locale: Cannot set LC_ALL to default locale: No such file or directory

# nano /etc/environment

read more »

Compile PHP 5.2.17 using phpfarm

In general phpfarm is working well in case you need multiple php environment in single machine. Special case is for PHP 5.2.17 (latest version of 5.2 generation), I got this error when compile :

opt/phpfarm/src/php-5.2.17/ext/dom/node.c: In function ‘zim_domnode_getNodePath’:
/opt/phpfarm/src/php-5.2.17/ext/dom/node.c:2002:8: warning: pointer targets in assignment differ in signedness [-Wpointer-sign]
value = xmlGetNodePath(nodep);
make: *** [ext/dom/node.lo] Error 1
make failed.

Google suggest me for apply patch.

php programmer

$cd php-5.2.17

$sudo curl -o php-5.2.17.patch
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
100  1817  100  1817    0     0    722      0  0:00:02  0:00:02 –:–:–   722

run the patch ::

$sudo patch -p0 -b < php-5.2.17.patch

patching file ext/dom/node.c
Hunk #1 succeeded at 1950 (offset 55 lines).
patching file ext/dom/documenttype.c
Hunk #1 succeeded at 215 (offset 10 lines).
patching file ext/simplexml/simplexml.c
Hunk #1 succeeded at 1343 (offset -74 lines).

$cd ..

$ sudo ./ 5.2.17

and finally get this :

Build complete.
Don’t forget to run ‘make test’.

Installing PHP SAPI module:       cgi
Installing PHP CGI binary: /opt/phpfarm/inst/php-5.2.17/bin/
Installing PHP CLI binary:        /opt/phpfarm/inst/php-5.2.17/bin/
Installing PHP CLI man page:      /opt/phpfarm/inst/php-5.2.17/man/man1/
Installing build environment:     /opt/phpfarm/inst/php-5.2.17/lib/php/build/
Installing header files:          /opt/phpfarm/inst/php-5.2.17/include/php/
Installing helper programs:       /opt/phpfarm/inst/php-5.2.17/bin/
program: phpize
program: php-config
Installing man pages:             /opt/phpfarm/inst/php-5.2.17/man/man1/
page: phpize.1
page: php-config.1
Installing PDO headers:          /opt/phpfarm/inst/php-5.2.17/include/php/ext/pdo/


check version now ::

$ /opt/phpfarm/inst/php-5.2.17/bin/php -v

PHP 5.2.17 (cli) (built: Sep 24 2014 16:53:53) (DEBUG)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies

Archive patch for backup (php5.2.17.patch.txt)

Quick DNS Server for Centos 5.10

dns settingI used to use Bind as dns server. The server itself is not for complex task such master or slave dns server. Only for authoritative and local dns cache (optional). As I love copy and paste I often post my experience here at least for my future reference in case I have problem.

Today, my copy and paste method in Centos server (running 5.10) not work anymore. Googling around don’t help either. So I choose other dns software that work for my case. Tinydns is my other choice but I think its time to try something new and I found marands.

Installation process is straightforward and working well, here’s the steps :


# yum install gcc

# gcc -v
Using built-in specs.
Target: x86_64-redhat-linux
Configured with: ../configure –prefix=/usr –mandir=/usr/share/man –infodir=/usr/share/info –enable-shared –enable-threads=posix –enable-checking=release –with-system-zlib –enable-__cxa_atexit –disable-libunwind-exceptions –enable-libgcj-multifile –enable-languages=c,c++,objc,obj-c++,java,fortran,ada –enable-java-awt=gtk –disable-dssi –disable-plugin –with-java-home=/usr/lib/jvm/java-1.4.2-gcj- –with-cpu=generic –host=x86_64-redhat-linux
Thread model: posix
gcc version 4.1.2 20080704 (Red Hat 4.1.2-54)

Downloaad latest marands (at the time of writing its 2.0.09)

# wget -c

# tar xvjf maradns-2.0.09.tar.bz2

# cd maradns-2.0.09
# make
# make install
VERSION=2.0.09 ./build/
Installing MaraDNS, placing programs in /usr/local//bin/ and /usr/local//sbin/,
man pages in /usr/local//share/man/man1, /usr/local//share/man/man5,
and /usr/local//share/man/man8, and documents in /usr/local//doc/maradns-2.0.09
Adding MaraDNS startup scripts
Starting up MaraDNS at runlevel 3
starting up MaraDNS at runlevel 5

# service maradns start

# chkconfig maradns on

Edit mararc to change bind address, I use as lan address.

# nano /etc/mararc
looking for ipv4_bind_address line and change it into :

ipv4_bind_addresses = “,”


Edit content of zone (

# nano /etc/maradns/

Use this lines :      +14400    soa 2012010117 14400 3600 604800 14400 ~      +14400    ns ~      +14400    ns ~  +14400    a ~  +14400    a ~      +14400    a ~  +14400    a ~      +14400    mx     10 ~ +14400    a ~


restart maradns service

# service maradns restart

dig test ::

Try query dns from other computer that exist on lan.

# dig @

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.6 <<>> @
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19886
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;        IN    A

;; ANSWER SECTION:    14400    IN    A

;; Query time: 0 msec
;; WHEN: Fri Sep 26 19:41:51 2014
;; MSG SIZE  rcvd: 53


The rest is change /etc/resolv.conf and add as nameserver.

In case of blocked port 53 :

# iptables -I INPUT -p udp -m udp --dport 53 -j ACCEPT
# service iptables save
# service iptables restart

Install git on CentOS 5.10

New project update need to manually applied to vps server. Since the project use gitlab as source code basis then I need to clone it using git.

Git is not available using yum

# yum install git
Loaded plugins: fastestmirror
Determining fastest mirrors
* base:
* extras:
* updates:
base                                                                                                                                             | 1.1 kB     00:00
extras                                                                                                                                           | 2.1 kB     00:00
updates                                                                                                                                          | 1.9 kB     00:00
updates/primary_db                                                                                                                               | 592 kB     00:00
utter-ramblings                                                                                                                                  | 2.3 kB     00:00
Setting up Install Process
No package git available.
Nothing to do

The option is install it via rpmforge repository.
cd /root
rpm --import
rpm -K rpmforge-release-0.5.2-2.el5.rf.i386.rpm
rpm -i rpmforge-release-0.5.2-2.el5.rf.i386.rpm
yum install gui
—> Package neon.i386 0:0.25.5-10.el5_4.1 set to be updated
—> Package perl-URI.noarch 0:1.35-3 set to be updated
–> Finished Dependency Resolution

Dependencies Resolved

Package Arch Version Repository Size
git i386 rpmforge 8.1 M
Installing for dependencies:
neon i386 0.25.5-10.el5_4.1 base 101 k
perl-Git i386 rpmforge 86 k
perl-URI noarch 1.35-3 base 116 k
perl-YAML noarch 0.72-1.el5.rf rpmforge 84 k
subversion i386 1.6.11-12.el5_10 updates 3.1 M
subversion-perl i386 1.6.11-12.el5_10 updates 1.0 M

Transaction Summary
Install 7 Package(s)
Upgrade 0 Package(s)

Total download size: 13 M
Is this ok [y/N]: y

# git --version

git version

Great ready to clone the gitlab.