PHP and Lighttpd for Android
Update 7 May 2012: New version released, containing PHP 5.4.2 version (CGI only). It now contains openssl / curl / SQLite modules statically linked within php-cgi executable and thus curlssl works! Beside the version number, all installation instructions below still apply.
If you are already using PHP 5.3.8, just grab the
php-cgi file from the 5.4.2 archive
system/xbin folder and replace the
/system/xbin/php-cgi on the device.
Below you can find an bundle of PHP 5.3.8 (CGI only) and Lighttpd 1.4.29 (FastCGI module included) which are cross compiled for ARMv5 CPUs (Android platforms mainly).
As you mail well know, both PHP and Lighttpd offer modules that could be loaded at run-time based on settings within configuration files. The bundle doesn’t include all modules, due to difficulties encountered when compiling for ARM platforms. Those modules that are included are statically linked in the executables (so no additional files are needed) nor configuration files need to be updated to load them.
Below you can see screenshots with the phone browser opening localhost address. Once you unpack the archive, there’s an index.php file which just calls phpinfo() to show the details about the build.
Of course, you can remove the file and put your own scripts
The list of PHP modules that are statically linked:
[root@arc]/sdcard# php -m [PHP Modules] cgi-fcgi Core ctype date dom ereg fileinfo filter ftp gd hash iconv json libxml pcre PDO pdo_sqlite Phar posix Reflection session SimpleXML soap sockets SPL SQLite sqlite3 standard tokenizer xml xmlreader xmlwriter zlib [Zend Modules]
mod_indexfile mod_userdir mod_dirlisting mod_status mod_simple_vhost mod_evhost mod_secdownload mod_cgi mod_fastcgi mod_scgi mod_ssi mod_proxy mod_staticfile mod_evasive mod_compress mod_usertrack mod_expire mod_accesslog
This comes with NO WARRANTY. Use it at your own risk!
Please check README.txt file found in /system/README.txt within the bundle.
PHP executable is offered under PHP license, Lighttpd executable under Lighttpd license, all other files in the bundle are offered under New BSD License (3 clause BSD license).
The bundle tries to mimic as much as possible the layout of a Debian installation of the two files. However, due to file system layout on Android phones (binaries under
/system folder), the folders are one step down, under
`-- system |-- bin | |-- lighttpd -> /system/xbin/lighttpd-static | `-- php -> /system/xbin/php-cgi |-- etc | |-- lighttpd | | `-- lighttpd.conf | `-- php | `-- php.ini |-- var | |-- log | `-- www | `-- index.php `-- xbin |-- fcgiserver |-- lighttpd-static |-- php-cgi |-- reload_fcgi.sh `-- reload_lighttpd.sh
- rooted phone with busybox installed.
- mount the /system partition as RW.
Using DroidSSHd on the phone and connecting with Putty (or equivalent) makes the whole process faster.
After you copy the archive above into the root of your SD Card, installation is easy:
cd / tar xf /sdcard/php-5.3.8_lighttpd_1.4.29_armv5.tar.gz reload-fcgi.sh reload-lighttpd.sh
You might notice that the owner / group of the files is 1000:1000. Ignore that, as long as you execute them as root, there’s no issue (those are the IDs of my username on the PC I created the tar.gz archive and tar tries to conserve the user / creation time / etc from when the archive was created).
The last two commands start the FCGI server (PHP with 4 children processes), and then launch lighttpd server as daemon.
The default port is 80.
Default htdocs folder is
The configuration files are under
/system/etc/php/php.ini. To restart either PHP or Lighttpd, please use one of the commands above.
It is mandatory that you are on the root folder when you extract the archive. tar will take care of creating all the missing folders, creating the links, etc, as long as you are on the root folder.
You can now open the phone’s browser and point it at
localhost and the
phpinfo() page should appear.
Installing Simple Machines Forum 2.0.1 on Android
Before executing the commands below, you need the “Full Install” smf_2-0-1_install.tar.gz archive downloaded from SMF and then copied onto your /sdcard root folder.
# cd /system/var/www # ls index.php # mkdir forum # cd forum # tar xf /sdcard/smf_2-0-1_install.tar.gz # reload_fcgi.sh # reload_lighttpd.sh
Last two commands are optional, if you already started the FastCGI server as well as lighttpd.
You should now connect to
http://localhost/forum and finish installation of the forum.