How to update your own Invoice Ninja to latest version

My bad for neglecting so many Invoice Ninja version from latest installation (version 3.2), when I log in I see this message :

A new version of Invoice Ninja is available. You’re running v3.2.0, the latest is v3.4.2

But actual download link lead me to 3.5.1 ( at the time of writing) which make confuse on which path should I choose for updating method :

  1. Update to 3.4.2 first then update to 3.5.1 or
  2. Update to the latest (3.2 to 3.5.1)

Well, Invoice Ninja provide support docs for the case. You can see it here.

But, it would be nice to try it first with dummy server to convince myself and preparing for unexpected issue that might occur.

Lets get start!

  1. Log in to vps server as root

  2. Checking path and ownership

cd /srv/users/serverpilot/apps

ls -l

total 99608
drwxrwxr-x+ 12 serverpilot serverpilot 4096 Jul 7 08:04 invoice
drwxr-xr-x+ 3 serverpilot serverpilot 4096 Jul 7 02:56 invoice_old
-rw-rw-r–+ 1 root root 101977765 Apr 2 20:33

ls invoice artisan composer.json gulpfile.js resources
Gruntfile.js bootstrap composer.lock package.json server.php
LICENSE bower.json config phpspec.yml storage c3.php database phpunit.xml tests
app codeception.yml docs public vendor

as you see from the above result :

path : /srv/users/serverpilot/apps/invoice

ownership : serverpilot (for user and group)

3. Download shell script and save it to a file

copy and paste from ‘raw paste data’ More

How to install ioncube loader on easyengine + php 7

I need to test chat engine from arrowchat and as usual I try to document the process in this blog. Arrowchat provide trial for 10 days. This version encrypted with ioncube and the server need to use ioncube loader.

I learn the hard way just to try arrowchat install display ūüôā

ee site create –mysql –php7

Remove php 5.6 from system

ee stack remove –php

Check running php process :
ps ax | grep php
1068 ?        Ss     0:00 php-fpm: master process (/etc/php/7.0/fpm/php-fpm.conf)

Copy file .so

ls /usr/lib/php/
20121212  20131226  20151012  20160303  7.0  php-helper  php-maintscript-helper  php7.0-fpm-reopenlogs  session-clean

ls /usr/lib/php/20160303/

Send ioncube lader

scp Downloads/ioncube/ [email protected]:/root

mv /root/ /usr/lib/php/20160303/

php.ini add in last one :

nano nano /etc/php/7.0/fpm/php.ini

zend_extension = /usr/lib/php/20160303/

restart nginx and friends

ee stack restart

PHP5.6-FPM is not installed
Restart : nginx     [OK]
Restart : php7.0-fpm[OK]
Restart : mysql     [OK]
Restart : postfix   [OK]

Upload arrowchat

scp Downloads/ [email protected]:/root

mv /root/ .

cat ../ee-config.php

define(‘DB_NAME’, ‘chat_score_com’);
define(‘DB_USER’, ‘chat_score_com’);
define(‘DB_PASSWORD’, ‘yMlgjwRHUDpQv23’);
define(‘DB_HOST’, ‘localhost’);

tail -f ../logs/error.log
2017/04/18 03:34:56 [error] 2404#0: *28 FastCGI sent in stderr: “PHP message: PHP Fatal error:¬† The file /var/www/ was encoded by the ionCube Encoder for PHP 5.0 and cannot run under PHP 7.0.
Please ask the provider of the script to provide a version encoded with the ionCube Encoder for PHP 5.6. in Unknown on line 0” while reading response header from upstream, client:, server:, request: “GET /arrowchat/ HTTP/1.1”, upstream: “fastcgi://”, host: “”

Reinstall php 5.6

ee stack install –php

Remove php 7.0

ee stack remove –php7

PHP 7.0 not supported.
Are you sure you to want to remove from server.
Package configuration will remain on server after this operation.
Any answer other than “yes” will be stop this operation :¬† yes
Removing packages, please wait…
Successfully removed packages
PHP5.6-fpm found on system.
Verifying and installing missing packages,

Reupload ioncube for php 5.6

scp Downloads/ioncube/ [email protected]:/root

mv /root/ /usr/lib/php/20151012/

edit php.ini

nano /etc/php/5.6/fpm/php.ini

zend_extension = /usr/lib/php/20151012/

Restart nginx

ee stack restart –nginx
Restart : nginx     [OK]

Update php version to old one

ee site update –php7=off

Summary :

If you want to try arrowchat then you’ll need make sure that you use php 5.6 ūüôā . NO php 7 support at this moment.

How to setup your own Invoice Ninja server with $2.5/mo budget

My friend ask me to test Invoice Ninja on my server. This software is very popular since you can do many things with invoice. This software made with Laravel 5.2 and I’ve test it ‘hard way’ in my vps .I think I can share simpler way to get this software run in affordable vps.

This documentation using Vultr vps smallest server and serverpilot free account. In nutshell, you have great invoice software with free control panel ūüôā

Lets get start!

Setup VPS Server

VPS provider is Vultr. They provide the plan with pricing $2.5/month.

I use Ubuntu (14.04 64 bit) with following specs : 512MB and 20GB SSD storage.

After hit deploy button write down these information :

  1. Ip address
  2. username (root)
  3. password for vps server

Setting URL for access Invoice Ninja

I use Simple Zone Editor from my cpanel hosting to set A record for subdomain

update :

I change my dns manager to cloudflare.

$ dig ns

; <<>> DiG 9.9.5-3ubuntu0.13-Ubuntu <<>> ns
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47657
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

; EDNS: version: 0, flags:; udp: 4096
;        IN    NS

;; ANSWER SECTION:    84500    IN    NS    84500    IN    NS

;; Query time: 4528 msec
;; WHEN: Tue Apr 04 05:52:45 UTC 2017
;; MSG SIZE  rcvd: 102

For cloud flare user just assign A record to vps ip address.

This url is not working yet but we’ll working on it ūüôā More

Step by Step Install Guide for Setup Publishing and Collaborate Documents on VPS

My friend who work on library came and asked me to install some component for their test server that will be base of publishing and collaborate documents. He already try the guide provided by Flowpaper but might be confuse on some steps that might be out of date.

He use free vps that located on Japan (actually its free $20 from Vultr) to try the guide but failed on swftools section. I use his vps and change a little bit the procedure on Ubuntu 14.04 64 bit LTS.

Here the steps : ( I log in as root)

Compiler and friends

apt-get update
apt-get upgrade
apt-get install build-essential

Verify its exist

gcc -v
make -v

Create Linux swap in two steps

Check current swap size

free -m

total       used       free     shared    buffers     cached
Mem:           488        427         61          0         13        346
-/+ buffers/cache:         66        421
Swap:            0          0          0

Install swap maker shell script

wget -O swap

Create 2G swap

sh swap 2G
Welcome to Swap setup script! This script will automatically setup a swap file and enable it.
Root access is required, please run as root or enter sudo password.
Source is @

Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=e1418ff5-1126-48d8-ac50-d6dd80427752
/swapfile   none    swap    sw    0   0

Done! You now have a 2G swap file at /swapfile

Check it

free -m

total       used       free     shared    buffers     cached
Mem:           488        428         59          0         14        348
-/+ buffers/cache:         66        422
Swap:         2047          0       2047

Install php5

apt-get install php5 unzip

Install pdftk

apt-get install pdftk


apt-get install swftools

Install pdf2json

mkdir pdf2json

cd pdf2json

wget -c

tar xvzf pdf2json-0.68.tar.gz


make && make install


Test flowpaper

cd /var/www/html/

wget -c


cd /var/www/html/php/config/

chmod 777 config.ini.nix.php

chmod -R 777 /var/www/html/pdf

Setting admin etc

enter location of pdf folder and add


as path of swftools


Step by Step Install PHP 7 on latest Centos 7 VPS

This title taken from my friend question who want to teach him about install latest php version (current version is 7.0.12) but also need to do it in simple copy and paste way ūüôā

I use Vultr $20 instance that will become a server for my friend (he is ios programmer that need lamp server for his project).

Lets get start!

Check available memory

free -m

total        used        free      shared  buff/cache   available
Mem:           1839          89        1331          16         418        1599

Create Swap

Create 4GB swap because the vps instance use 2GB memory : (in general swap space is twice of memory) More

How to transfer self hosted vps wordpress to cpanel hosting

Another case for hostingformula presented by my brother ūüôā . He use vps for his blog that backed by wordpress. Not critical blog actually. He use it for daily ramblings and so on. Unfortunately his vps expire and he already get cpanel hosting for his next place. He ask me to transfer his blog as soon as possible.

The plan for his blog are :

Request for ssh access

Many cpanel hosting support ssh but this feature not enabled by default. You have to open a ticket and ask for activate ssh access for your cpanel account. Note : every hosting company have different policy including ssh port. Usually its not 22 but you ask for exact port for sure.

Use scp

My brother cpanel hosting is very limited in space. He’s current use around 400 MB and his cpanel hosting space is 500 MB. Very tight huh ūüôā . Scp come for rescue in this case. The exact command for scp transfer from vps to cpanel :

scp -P 24579 -r wp-content [email protected]:.

24579 is ssh port  (your webhosting ssh port is vary)

-r is recursive mode transfer

wp-content ; wordpress heavily use wp-content folder to store plugins, uploaded image, backup etc. I need only this folder as I can download latest wordpress code from .

Fix Permission

Many cpanel hosting use suphp . You’ll need to fix permisson for folder (755) and files (644) or you’ll get annoying error message when you access your wordpress blog.

Quick commands :

find wordpress_folder/ -type d -print0 | xargs -0 chmod 0755

find wordpress_folder/ -type f -not -name “*.pl” -not -name “*.cgi” -not -name “*.sh” -print0 | xargs -0 chmod 0644

Done. The plan is complete now ūüôā

Maybe I’ll let my brother to do it himself now and I’ll check his work.

Bonus Plan

To avoid downtime he need to set cloudflare account and activate it for dns only. When everything is fine then he can activate proxy function.

How to Install Multiple PHP version (PHP 5.2, PHP 5.5, PHP 5.6 and PHP 7) in single VPS with Ubuntu 16.04

I need to test the effect of new plugin on new development stage while still preserve production setting. Not in high traffic domain and I also want to learn new framework called phalcon php. Since I want to support newest ubuntu server I came with my requirement list :

  1. Must be able to run on newest Ubuntu (I’m aware about 16.04 LTS)
  2. Must be able to run old PHP version (the latest of 5.2 release is 5.2.17). Even this version is no longer supported by but a few products still rely on this version.
  3. I want to learn Phalcon PHP version 2.0.x .
  4. I also want to compare it with latest version of Phalcon PHP version 2.1.x
  5. Newest PHP version 7 also needed

The list translated into plan :

5.2 -> 5.2.17
5.5 -> 5.5.32 -> phalcon 2.0.10 (latest)
5.6 -> 5.6.18 -> phalcon 2.1 (latest)
7.0 -> 7.0.3

Well, I use Vultr since this vps working well for me for long time and also support iso (yes, I use Ubuntu 16.04 server daily build). (EU) Frankfurt, DE chosen as vps location for this server. 64 bit OS (Xenial Server).


I also pointing A record for these sub domain. More

How to install PHP 7 GA on CentOs Server

One of blogger in my town came and ask me to help him with his server. Actually his server is enough to handle his wordpress blog but he don’t know what to do. I suggest him to upgrade his server or reinstall server to support latest PHP 7. I told him that newest PHP is twice fast as legacy PHP that he use. I promise to show him the steps and put it public. Maybe other blogger need and find it useful too.

Lets get start!

I use DigitalOcean VPS (1GB package) – You get free $10 if you’re new user.

Choose CentOS 6.7 64 bit with 1 GB memory.

Login to vps and install :

# curl -O && chmod 0700 && bash

Wait till you see # sign . Follow by type

# centmin More

Install PHP 7 and Apache22 on DragonFlyBSD 4.2.4

Using current machine but get faster performance by only upgrade software is a good offer. That feel happen to me when I hear about php 7 release. Being curious I decide to use latest dragonflybsd (at this moment 4.2.4) as pilot project for new hosting infrastructure platform.

Lets get start!

# uname -a

DragonFly 4.2-RELEASE DragonFly v4.2.4-RELEASE #6: Sun Aug 9 13:25:14 EDT 2015 [email protected]:/usr/obj/home/justin/release/4_2/sys/X86_64_GENERIC x86_64

# pkg info

bind-tools-9.10.2P3 Command line tools from BIND: delv, dig, host, nslookup…
ca_root_nss-3.19.2 Root certificate bundle from the Mozilla Project
cdrtools-3.00_2 CD/DVD/BluRay and ISO-9660 image creation and extraction tools
curl-7.43.0_2 Non-interactive tool to get files from FTP, GOPHER, HTTP(S) servers
cvsps-2.1_1 Create patchset information from CVS
expat-2.1.0_2 XML 1.0 parser written in C
gettext-runtime-0.19.4 GNU gettext runtime libraries and programs
git-2.4.6 Distributed source code management tool
idnkit-1.0_5 Library to handle internationalized domain names
indexinfo-0.2.3 Utility to regenerate the GNU info page index
isc-dhcp42-server-4.2.8_1 ISC Dynamic Host Configuration Protocol server
krb5-1.13.2_2 Authentication system developed at MIT, successor to Kerberos IV
libxml2-2.9.2_3 XML parser library for GNOME
pkg-1.5.5 Package manager More

VPS run out of space after apt-get upgrade

Yes, updraft plus plugin complain about space left. Needed 24 MB but less than that available.

Quick search lead me to problem that occur after apt-get upgrade.

# df -H

Filesystem Size Used Avail Use% Mounted on
/dev/vda1 16G 15G 296M 99% /
udev 385M 13k 385M 1% /dev
tmpfs 79M 254k 79M 1% /run
none 5.3M 0 5.3M 0% /run/lock
none 393M 0 393M 0% /run/shm


# apt-get install -f

Reading package lists… Done
Building dependency tree
Reading state information… Done
The following packages were automatically installed and are no longer required:
linux-headers-3.2.0-93-generic-pae linux-headers-3.2.0-88-generic-pae linux-headers-3.2.0-90-generic-pae linux-headers-3.2.0-85-generic-pae linux-headers-3.2.0-70
linux-headers-3.2.0-72 linux-headers-3.2.0-73 linux-headers-3.2.0-74 linux-headers-3.2.0-80 linux-headers-3.2.0-75 linux-headers-3.2.0-76 linux-headers-3.2.0-82
linux-headers-3.2.0-77 linux-headers-3.2.0-83 linux-headers-3.2.0-84 linux-headers-3.2.0-79 linux-headers-3.2.0-90 linux-headers-3.2.0-85 linux-headers-3.2.0-91
linux-headers-3.2.0-86 linux-headers-3.2.0-92 linux-headers-3.2.0-87 linux-headers-3.2.0-93 linux-headers-3.2.0-88 linux-headers-3.2.0-89
linux-headers-3.2.0-82-generic-pae linux-headers-3.2.0-77-generic-pae linux-headers-3.2.0-72-generic-pae libluajit-5.1-common linux-headers-3.2.0-89-generic-pae
linux-headers-3.2.0-91-generic-pae linux-headers-3.2.0-86-generic-pae libluajit-5.1-2 linux-headers-3.2.0-83-generic-pae linux-headers-3.2.0-80-generic-pae
linux-headers-3.2.0-75-generic-pae linux-headers-3.2.0-73-generic-pae linux-headers-3.2.0-70-generic-pae linux-headers-3.2.0-92-generic-pae
linux-headers-3.2.0-87-generic-pae linux-headers-3.2.0-84-generic-pae linux-headers-3.2.0-79-generic-pae linux-headers-3.2.0-76-generic-pae
Use ‘apt-get autoremove’ to remove them.
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
[email protected]:/var/log# apt-get autoremove
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following packages will be REMOVED:
libluajit-5.1-2 libluajit-5.1-common linux-headers-3.2.0-70 linux-headers-3.2.0-70-generic-pae linux-headers-3.2.0-72 linux-headers-3.2.0-72-generic-pae
linux-headers-3.2.0-73 linux-headers-3.2.0-73-generic-pae linux-headers-3.2.0-74 linux-headers-3.2.0-74-generic-pae linux-headers-3.2.0-75
linux-headers-3.2.0-75-generic-pae linux-headers-3.2.0-76 linux-headers-3.2.0-76-generic-pae linux-headers-3.2.0-77 linux-headers-3.2.0-77-generic-pae
linux-headers-3.2.0-79 linux-headers-3.2.0-79-generic-pae linux-headers-3.2.0-80 linux-headers-3.2.0-80-generic-pae linux-headers-3.2.0-82
linux-headers-3.2.0-82-generic-pae linux-headers-3.2.0-83 linux-headers-3.2.0-83-generic-pae linux-headers-3.2.0-84 linux-headers-3.2.0-84-generic-pae
linux-headers-3.2.0-85 linux-headers-3.2.0-85-generic-pae linux-headers-3.2.0-86 linux-headers-3.2.0-86-generic-pae linux-headers-3.2.0-87
linux-headers-3.2.0-87-generic-pae linux-headers-3.2.0-88 linux-headers-3.2.0-88-generic-pae linux-headers-3.2.0-89 linux-headers-3.2.0-89-generic-pae
linux-headers-3.2.0-90 linux-headers-3.2.0-90-generic-pae linux-headers-3.2.0-91 linux-headers-3.2.0-91-generic-pae linux-headers-3.2.0-92
linux-headers-3.2.0-92-generic-pae linux-headers-3.2.0-93 linux-headers-3.2.0-93-generic-pae
0 upgraded, 0 newly installed, 44 to remove and 1 not upgraded.
After this operation, 1425 MB disk space will be freed.
Do you want to continue [Y/n]? y
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_TIME = “id_ID.UTF-8”,
LC_NAME = “id_ID.UTF-8”,
LC_PAPER = “id_ID.UTF-8”,
LANG = “en_US.UTF-8”
are supported and installed on your system.
perl: warning: Falling back to the standard locale (“C”).
locale: Cannot set LC_ALL to default locale: No such file or directory
(Reading database … 642426 files and directories currently installed.)
Removing libluajit-5.1-2 …
Removing libluajit-5.1-common …
Removing linux-headers-3.2.0-70-generic-pae …
Removing linux-headers-3.2.0-70 …
Removing linux-headers-3.2.0-72-generic-pae …
Removing linux-headers-3.2.0-72 …
Removing linux-headers-3.2.0-73-generic-pae …
Removing linux-headers-3.2.0-73 …
Removing linux-headers-3.2.0-74-generic-pae …
Removing linux-headers-3.2.0-74 …
Removing linux-headers-3.2.0-75-generic-pae …
Removing linux-headers-3.2.0-75 …
Removing linux-headers-3.2.0-76-generic-pae …
Removing linux-headers-3.2.0-76 …
Removing linux-headers-3.2.0-77-generic-pae …
Removing linux-headers-3.2.0-77 …
Removing linux-headers-3.2.0-79-generic-pae …
Removing linux-headers-3.2.0-79 …
Removing linux-headers-3.2.0-80-generic-pae …
Removing linux-headers-3.2.0-80 …
Removing linux-headers-3.2.0-82-generic-pae …
Removing linux-headers-3.2.0-82 …
Removing linux-headers-3.2.0-83-generic-pae …
Removing linux-headers-3.2.0-83 …
Removing linux-headers-3.2.0-84-generic-pae …
Removing linux-headers-3.2.0-84 …
Removing linux-headers-3.2.0-85-generic-pae …
Removing linux-headers-3.2.0-85 …
Removing linux-headers-3.2.0-86-generic-pae …
Removing linux-headers-3.2.0-86 …
Removing linux-headers-3.2.0-87-generic-pae …
Removing linux-headers-3.2.0-87 …
Removing linux-headers-3.2.0-88-generic-pae …
Removing linux-headers-3.2.0-88 …
Removing linux-headers-3.2.0-89-generic-pae …
Removing linux-headers-3.2.0-89 …
Removing linux-headers-3.2.0-90-generic-pae …
Removing linux-headers-3.2.0-90 …
Removing linux-headers-3.2.0-91-generic-pae …
Removing linux-headers-3.2.0-91 …
Removing linux-headers-3.2.0-92-generic-pae …
Removing linux-headers-3.2.0-92 …
Removing linux-headers-3.2.0-93-generic-pae …
Removing linux-headers-3.2.0-93 …
Processing triggers for libc-bin …
ldconfig deferred processing now taking place

# df -H

Filesystem Size Used Avail Use% Mounted on
/dev/vda1 16G 12G 4.1G 74% /
udev 385M 13k 385M 1% /dev
tmpfs 79M 254k 79M 1% /run
none 5.3M 0 5.3M 0% /run/lock
none 393M 0 393M 0% /run/shm


Wow, huge saver ūüôā

Fix Crawl 404 Error on Google Search Console

I just find out that one of my blog got hacked. The intruder put a file in wp-content directory and cause 404 error .


Wow, huge one (77,630) error.

What I’ve done to fix this error :

  1. Delete the page ; xx-data.php
  2. Select all error from google search console and click ‘Mark as Fixed’
  3. Request xx-data.php removal from Google index


Let see if I see another error. Will update this post soon.

Fix MySQL 113 error

Yesterday I got 113 error code from MySQL when I try to test access it from network.

The machine have 2 lan cards ( and Both of them are active and I can ping it.

# mysql -ualam -p -h
Enter password:
ERROR 2003 (HY000): Can’t connect to MySQL server on ‘’ (113)
# mysql -ualam -p -h
Enter password:
ERROR 2003 (HY000): Can’t connect to MySQL server on ‘’ (113)

After see the post about MySQL error codes . I find out that the problem might came from firewall.

Check current firewall state :

# cat /etc/sysconfig/iptables

# Generated by iptables-save v1.3.5 on Thu Aug 13 13:13:27 2015
:OUTPUT ACCEPT [389671:206304610]
:RH-Firewall-1-INPUT – [0:0]
-A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 8082 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
-A INPUT -j RH-Firewall-1-INPUT
-A INPUT -i eth0 -p tcp -m tcp –dport 3306 -j ACCEPT
-A INPUT -i eth1 -p tcp -m tcp –dport 3306 -j ACCEPT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp -m icmp –icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p esp -j ACCEPT
-A RH-Firewall-1-INPUT -p ah -j ACCEPT
-A RH-Firewall-1-INPUT -d -p udp -m udp –dport 5353 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp –dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT –reject-with icmp-host-prohibited
# Completed on Thu Aug 13 13:13:27 2015

Well, this line :

-A INPUT -j RH-Firewall-1-INPUT

is the source of problem. Edit the order of rule and restart iptables.

# mysql -ualam -p -h
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6152
Server version: 5.1.58-log MySQL Community Server (GPL) by Utter Ramblings

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.


Mission accomplish ūüôā

Cpanel tip : Speed up your wordpress with proper PHP version

I don’t have much money for using expensive web hosting or vps or dedicated server for my wordpress blog. Is there any way to speed it up without touch plugin or something else?

Well, using cache is the best way to achieve blazing fast wordpress but one trick I found is using proper PHP version.

Yes, using latest PHP version is dead simple way to make wordpress faster.

By default cpanel user don’t get latest version, for example in my cpanel I see this :


For latest PHP version you can refer to site :

php-cpanel2As you can see there are 3 version :

  1. PHP 5.6.11
  2. PHP 5.5.27
  3. PHP 5.4.43

Since I use cpanel I can not compile nor install latest PHP version as I used to using VPS but I can use closest version to 5.6.11.

Click “select php version” under software and services menu.


By default native php (the ones that come with server operating system) will be shown.


Choose 5.6 from drop down and click save as current.


Of course you can choose extensions. Only use the one that you use. For example if you only use mysql then you need to disable pgsql (postgresql) from extension.

How do I know if I already use PHP 5.6?

Create new file using file manager facility and save it as coba.php with these lines :




save and open from web browser. If you see like this one then your previous configuration is working well.


Testing PHP 7 on Centos 7

PHP 7 already kick the door with its beta2 while HHVM shadow it ūüôā

I want to test it with CentOS 7 minimal installation and $5 quick vps installation let me in.

# yum update

# yum -y install nano

# nano /etc/yum.repos.d/php7-nightly.repo

put these lines (from zend).

name = PHP7 nightly by Zend Technologies
baseurl =

# yum -y install lynx httpd php7-nightly

# cp /usr/local/php7/ /etc/httpd/modules/

# systemctl enable httpd.service

# systemctl restart firewalld.service

# echo '<?php phpinfo();?>' > /var/www/html/info.php

# systemctl start httpd.service



Update : Recommended guide for production PHP 7 on CentOS server, click here.

How to enable phalcon php in cpanel shared hosting

Long time not see you guys ūüôā . Being busy with new toys called Phalcon PHP . Yes, this tool is very awesome in my opinion and I use it with my vps. Since this blog also run in vps so I just surprise when I see PhalconPHP also supported in cpanel hosting that I also use.

Yes, namecheap also enable PhalconPHP in their shared hosting package.

How do I know if PhalconPHP work in my cpanel?

Create simple file :

Login to cpanel and click ‘File Manager’ -> New File


Enter these lines :


save the file and access it online.

By default you will not see PhalConPHP extension enabled.

Change PHP version and enable PhalCon PHP extension for Cpanel

Click “Select PHP version”


Select PHP 5.5 and set this version as current.

Then choose ‘phalcon’ from extension supported list.



Click save.

Then you have working Phalcon PHP support.

Current usage in my namecheap account.



Time to fly with phalcon ūüôā

For vps, you refer to this post. (install multiple php on ubuntu 16.04 vps).





$5/month FreeBSD VPS experience (from March 2017 you can get it with $2.5/month)

A reader shout me an email asking if I can share my experience around FreeBSD VPS that I use. Well that topic is not a fancy thing. I think that kind of topic will give user ‘bias’ opinion but since its my blog and my other reader might be want to know too then I try my best to share it.


The purpose of FreeBSD deployment in vps is based on experiment hobby. I use FreeBSD since 4.7 for email server (qmail, djbdns stuff). Another test for web server and php stuff also included.


I never care about which technology they use. Is it Xen or KVM. I’m cheapskate. I try the cheap one ūüôā



RootBSD is my first FreeBSD vps provider. I use their cheapest package ($19.97/month). 512MB memory with 20GB storage. Setup is not instant. I used to get my account information in minimum 4 hours after they verify payment etc. I never use their support and that means good. Great service make me never get in touch with their technical support ūüôā . Reverse dns available from control panel. Payment is fix. No hourly rate and you must pay in front for their service.


Their ads show up when I open Facebook and I give them a try. They have $1/month package (round up, its 0.99 actually). 256MB memory and 10GB SSD. I use it for VPN server . They have 4 location (usa-east, usa-central, usa-west and canada-east). Email port blocked by default. You have to request to technical support to lift the restriction. Their FreeBSD limited to FreeBSD 10 at the moment. No custom iso supported.


This provider is my favorite. At the moment provide 14 location and generous specs. By default they provide mainstream distribution such as CentOS, Ubuntu, Debian, Windows, CoreOS, FreeBSD 10 and more. You’ll get more distribution under 64 bit but you can choose 32 bit too. What I really like is their custom iso option. This mean you can install and experiment with many OS which not appear by default. So far I’ve tried :

Their cheapest price is $5/month 2.5/month and if you in limited budget you can use it hourly. Email port blocked by default and you need to contact support to remove the barrier.

Digital Ocean

This provider is my favorite when I looking for Singapore based location. Depend on my client need. But I ever see different network performance in same region. Same wordpresss based site located in same Singapore region and different IP (i think different server too) but very slow. My friend also report same experience. I choose to move slow server to USA location and so far it work well in term of network connectivity speed. Email port is not blocked by default which is good news for newbie who want to see their Zimbra server work or not. Digital Ocean recently support FreeBSD (FreeBSD 10.1) but still no custom iso. Their price also $5/month and hourly rate for minimal server (512MB, 20GB SSD). Yes, the storage is more 5GB than Vultr but memory is less 256MB than Vultr.


At the moment the uptime is great for all provider. The longest one located in Digital Ocean server :

# uptime
03:38:37 up 366 days, 23:37, 1 user, load average: 0.00, 0.00, 0.00

While Vultr follow

# uptime
03:39:53 up 51 days, 56 min, 1 user, load average: 0.16, 0.10, 0.08


# uptime
22:43:37 up 39 days, 19:04, 1 user, load average: 0.06, 0.03, 0.05

Yes, all of the server uptime currently match their deployment date.

In general my view about ‘cheap’ vps changed. I can¬†deploy many server with low budget and spare the rest for balancing or backup purpose and Yes, it might use my favorite os ‘the power to serve’ ūüôā

WordPress and Cpanel main domain

Last Cyber Friday 2014 I got chance to try namecheap hosting. Its shared hosting package that normally priced $9,88/year . The price is only for 1st year but worth to try since I only got it for $0,98. The price is very good but since people often neglect it I prefer to act vice versa. I’ll use this hosting package for my family blog.

Domain and Sub Domain

The blog itself consist from :

1. Main domain

2. 4 sub domain but my wife told me to only activate 3 sub domain.


Size of family blog (main domain + all sub domain is around 500 MB) in zip format.

$ du -sh zip
508M    zip


The traffic is not big :

– less than 100 uv (unique visitor) for main domain

– less than 1000 uv for all sub domain (my wife blog is more famous than my blog hahaha). More

How to resolv looping error after change server

Hostingformula currently switch to cheap vps server. Old hosting provider using cpanel and everything went fine . Almost perfect in migration process except one thing.

I forgot about cloudflare.


Yes. I forgot if I enable cloudflare for this domain and the result is bad. Looping error caused by www mapping that set automatically by cloudflare kill this blog.

Solution for this kind of error is simple :

1. Disable cloudflare for your domain by visit cloudlfare or

2. Visit cpanel, click Simple DNS setting and ‘delete’ any entry related to cloudflare (see picture above for example).

How to test if the problem disappear?

Problem left after this action is dns propagation. You can install vpn software like hotspotshield or related to try visit your blog / website again.

3. Use intodns to verify the dns change. If intodns told you right ip address then you’re on right track.

4. Patient. Other problem left is client dns. Since you can not force client to use google or opendns for resolve your new server the only option is be patient.

How to move Joomla website to VPS

A friend of mine that not seen for years contact me. He had problem with his school website. Headmaster give him order to take care their website that seem to abandoned by current holder. Every time they (school) contact him. No respond and no email. He ask me to see it and if possible solve it immediately.

Update : if you’re in hurry then you can use Fiverr service that will do the job ($5 per site). Click here to see the service.

After ask the website hosting representative we have clues where do we must start.

  1. Create official letter from school about domain ownership.
  2. Scan the letter and send it to hosting company

The process itself is not straightforward as current holder respond to hosting company email and the phone but not respond to us. After a month the progress finally move to right direction. Current holder not paid for hosting fee and that’s the reason for my friend. Contact hosting company and finally they approve account moving and switching.

Since the hosting company suspend the account for its late payment then the website is not accessible anymore and only display ‘account suspended’ message. My friend ask me if I can give him temporary place for their school. I agree to give him a space with exchange. I must do the transfer process myself. I like to see how to transfer joomla based website to vps.

Lets get start!

Backup Joomla Website

Fortunately my friend already download the backup file. Its tar.gz file (backup-11.15.2014_11-29-19_domain.tar.gz ).

Send Joomla backup file to vps

After copying the file to my laptop I initiate transfer using scp.

scp backup-11.15.2014_11-29-19_domain.tar.gz [email protected]:/root

the process depend on internet speed and file size. For my case, it took around 1 hour to upload 132MB of file.

Creating New Domain on VPS

I use Easyengine that I use in previous post for host wordpress. Joomla also created with php and utilize mysql. So I choose php+mysql website.

# ee site schooldomainname --mysql

The command will generate all required files including database plus its credentials at /var/www/schooldomainname/ee-config.php

To see database name, database user database password and database host created by easyengine you can use :

cat /var/www/schooldomainname/ee-config.php

Extract Joomla Backup on VPS

I use same VPS that powered by Vultr for WordPress. Time for extract backup file.

# mv backup-11.15.2014_11-29-19_schooldomainname.tar.gz /var/www/schooldomainname/

# cd /var/www/schooldomainname/

# tar xvzf backup-11.15.2014_11-29-19_schooldomainname.tar.gz

# ls
addons     cron          fp              httpfiles  meta  mysql             pds              psql_users.sql    resellerpackages  shell      sslkeys      userdata  vf
bandwidth  digestshadow  has_sslstorage  locale     mm    mysql-timestamps  proftpdpasswd    quota             sds               ssl        suspended    va
counters   dnszones      homedir         logaholic  mma   mysql.sql         psql             resellerconfig    sds2              sslcerts   suspendinfo  vad
cp         domainkeys    homedir_paths   logs       mms   nobodyfiles       psql_grants.sql  resellerfeatures  shadow            ssldomain  userconfig   version

Looks like this backup file created by my friend taken from cpanel backup wizard.

I just need to find out where joomla files and its database located.

Finding Joomla Files + Database

After search for while I can see where is the location of Joomla files. Its in :


Database file located in :


Move Joomla folder to Easyengine public folder

Next step is move joomla folder found from previous step to easyengine folder.

#cd /var/www/schooldomainname

# mv backup-11.15.2014_11-29-19_schooldomainname/homedir/public_html .
# mv tes/backup-11.15.2014_11-29-19_schooldomainname/mysql/schooldomainname.sql .

Edit configuration file of Joomla

The configuration file located in configuration.php . Edit $user, $password and $db .

#nano htdocs/configuration.php

save the file.

Import Joomla Database File

# mysql -udb_user -p db_name < schooldomainname.sql
Enter password:

Make Joomla website live

# ee site enable schooldomainame

Thats it. Try to reload it via web browser and everything load fine so far.

My friend happy with the migration process. The load speed is incredible and they can add their content again and if they like it then they can make their own server with Vultr.

Lesson learned :

  1. Never use personal email address as contact, billing etc for school domain. Always use school email address. Beside this touch make everything official also prevent future problem like my friend case.
  2. If possible use the longest period for registering school domain. Yearly renewed domain is not suitable for a school.

How to move wordpress to easyengine based vps

Its almost the end of year. Many offer came and out include hosting. My friend just have her hosting account expire and the reason why she not continue her hosting plan is cost. She got her hosting package last year for $10 (from facebook group). The package cover free domain + 12 month of hosting and when renewal process came she can afford it. Its $104 now. Ten times from previous invoice. She already knew it and try to find other solution to keep her blog alive.

She already red my post about utilize vps. Her blog is using wordpress and she want to try it after she see my other blog that load blazing fast. I told her about Vultr and she could try it for cheapest package.

I promise her to help the migration process in exchange she let me share the process for reader (I won’t reveal domain name). Hope this useful for others.

Lets get start!

Backup WordPress

In general WordPress is PHP and MySQL application. To backup wordpress the step is quite simple.

1. Backup database

To see all database credentials see wp-config.php content and write it down to notepad or other equal application. I’m lucky the host provide ssh access. So I can use command line for quick access ūüôā

# cat wp-config.php

This command will display the content of wp-config.php . If you just want to extract the database essentials use this command : (my assumptions that you already log in with ssh). More