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 curlsslworks! Beside the version number, all installation instructions belowstill 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.
Introduction
Below you can find an bundle of PHP 5.3.8 (CGI only) and Lighttpd1.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 encounteredwhen compiling for ARM platforms. Those modules that are included arestatically linked in the executables (so no additional files are needed) nor configuration files need to be updated to load them.
Screenshots
Below you can see screenshots with the phone browser openinglocalhost address. Once you unpack the archive, there’s an index.phpfile which just calls phpinfo() to show the details about the build.
Of course, you can remove the file and put your own scripts
PHP Modules
The list of PHP modules that are statically linked:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | [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] |
Lighttpd Modules
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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 |
Download
This comes with NO WARRANTY. Use it at your own risk!
php-5.4.2_lighttpd_1.4.29_armv5.tar.gz
php-5.3.8_lighttpd_1.4.29_armv5.tar.gz
License
Please check README.txt file found in /system/README.txt within the bundle.
PHP executable is offered under PHP license, Lighttpd executableunder Lighttpd license, all other files in the bundle are offered underNew BSD License (3 clause BSD license).
Installing
The bundle tries to mimic as much as possible the layout of a Debianinstallation of the two files. However, due to file system layout onAndroid phones (binaries under /system folder), the folders are one step down, under /system folder:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | `-- 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 |
Prerequisites:
- 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:
1 2 3 4 | 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 thearchive 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 /system/var/www.
The configuration files are under /system/etc/lighttpd/lighttpd.conf and /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 rootfolder.
You can now open the phone’s browser and point it at localhost and the phpinfo() page should appear.
Example usage
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.
1 2 3 4 5 6 7 8 | # 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.
Enjoy