http://hex.ro/wp/blog/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 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 and Lighttpd for Android-LMLPHP

PHP and Lighttpd for Android-LMLPHP

phpinfo() on Sony Arc

PHP and Lighttpd for Android-LMLPHP

phpinfo() on Sony X10 Mini

PHP Modules

The list of PHP modules that are statically linked:

[root@arc]/sdcard# php -m[PHP Modules]cgi-fcgiCorectypedatedomeregfileinfofilterftpgdhashiconvjsonlibxmlpcrePDOpdo_sqlitePharposixReflectionsessionSimpleXMLsoapsocketsSPLSQLitesqlite3standardtokenizerxmlxmlreaderxmlwriterzlib[Zend Modules]
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

mod_indexfilemod_userdirmod_dirlistingmod_statusmod_simple_vhostmod_evhostmod_secdownloadmod_cgimod_fastcgimod_scgimod_ssimod_proxymod_staticfilemod_evasivemod_compressmod_usertrackmod_expiremod_accesslog
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:

`-- 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
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:

cd /tar xf /sdcard/php-5.3.8_lighttpd_1.4.29_armv5.tar.gzreload-fcgi.shreload-lighttpd.sh
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 PHP and Lighttpd for Android-LMLPHP 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.

# cd /system/var/www# lsindex.php# mkdir forum# cd forum# tar xf /sdcard/smf_2-0-1_install.tar.gz# reload_fcgi.sh# reload_lighttpd.sh
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 PHP and Lighttpd for Android-LMLPHP

10-30 00:01
查看更多