27/05/2009

Serveur Lighttpd avec PHP sur iPhone

Un script PHP exécuté directement sur l'iPhone avec un serveur LighttpdToujours avoir un petit serveur HTTP dans sa poche, c’est possible! C’est même très pratique pour toujours avoir des fichiers sous la main accessibles simplement en HTTP et d’autres utilisations illicites :D

Nous allons voir comment installer un serveur Lighttpd (alternative à Apache), avec PHP sur un iPhone 2.2.1 jailbreaké.

Installation

Logo de LighttpdGrâce à Cydia ou Icy, installez les packages suivants:

  • OpenSSH un des indispensables du hacker iPhone, il lance un serveur SSH sur celui-ci (l’iPhone, pas le hacker xD)
  • Lighttpd est le serveur HTTP à proprement parler. Très léger et sous license libre (BSD), c’est une très bonne alternative à Apache
  • PHP: Hypertext Preprocessor que nous lierons à Lighttpd dans la configuration

Configuration

Redémarrez et connectez-vous en ssh à votre iPhone, le mot de passe par défaut est alpine.

ssh root@iPhone.local

D’abord créons tous les répertoires utiles:

mkdir /etc/lighttpd/ /etc/lighttpd/logs/ /etc/lighttpd/htdocs/

Configurons Lighttpd :

nano /etc/lighttpd/lighttpd.conf
server.document-root = "/etc/lighttpd/htdocs"
server.port = 80

server.tag ="lighttpd"
server.errorlog = "/etc/lighttpd/logs/error.log"
accesslog.filename = "/etc/lighttpd/logs/access.log"

server.modules = ("mod_access","mod_accesslog","mod_fastcgi","mod_rewrite","mod_auth","mod_fastcgi")

index-file.names = ( "index.html", "index.php" )

#Configuration PHP
fastcgi.server = (".php" =>
        ("localhost" =>
                ("bin-path" => "/usr/bin/php-cgi",
                "socket" => "/tmp/php.socket")
        )
)

Lighttpd est bien sûr un serveur tout à fait standard largement utilisé sur le web : vous pouvez adapter sa configuration selon vos moindres désirs.

Lancer le serveur

Il ne reste plus qu’à lancer le serveur en une petite ligne de commande. Je n’ai pas trouvé d’interface graphique qui permette de le faire simplement.

lighttpd -f /etc/lighttpd/lighttpd.conf

Créons un petit fichier PHP pour voir si tout marche bien:

nano /etc/lighttpd/htdocs/index.php
<?php $who = 'Geekfault';
echo 'Hello, '.$who.'.'; ?>

La configuration Lighttpd décrite ici permet de se connecter à votre iPhone avec tous les hostnames qui lui sont affectés: iPhone.local, localhost, adresse IP, …

MySQL ?

Il n’est malheureusement pas possible pour l’instant de faire tourner un serveur MySQL sur l’iPhone et, pire, le PHP proposé est compilé sans le mod_mysql, ce qui empêche même les connexion MySQL à un serveur distant.

Il faudra se contenter de SQLite. Dommage.

Source

  1. AlcoolGeek
    30/05/2009 à 19:20 | #1

    salut salut je viens de découvrir ce tuto et j’ai un soucis :
    Quand je veut lancer le serveur avec “lighttpd -f /etc/lighttpd/lighttpd.conf” il me met un message d’erreur sur mon terminal en me disant “(network.c.300) can’t bind to port : 80 Permission Denied”.

    Es ce que par hasard tu aurais une idée du soucis en question ? j’ai un iTouch 2G au cas où :/

  2. AlcoolGeek
    30/05/2009 à 19:23 | #2

    heu .. désolé, j’avais oublié de me mettre en root -_-”

  3. 31/05/2009 à 05:49 | #3

    Tout est résolu donc? :) Sinon il faut changer le port (server.port = 80) dans lighttpd.conf

  4. 05/07/2009 à 00:34 | #4

    Salut, d’abord merci beaucoup pour ce tuto, il est génial !
    j’ai une simple question, comment désactiver le serveur ?
    j’ai téléchargé ‘top.app’ pour kill un process mais je trouve pas de lighttpd! de même rien dans SBsettings.
    C’est juste qu’il bouffe environ 11MB de RAM et que j’en ai pas besoin toujours.

    Merci d’avance!

  5. 11/07/2009 à 22:07 | #5

    Le serveur n’est lancé que quand tu fais

    lighttpd -f /etc/lighttpd/lighttpd.conf

    Pour le couper, c’est moins évident effectivement. Il faut récupérer son pid (avec top, installable dans Cydia) et puis faire un petit

    kill PID

    Une autre solution consiste à lancer le serveur avec l’option -D pour qu’il ne passe pas en background : un Ctrl+C ou une déconnexion du SSH suffit à le tuer. Il y a aussi moyen d’installer screen, c’est très pratique.

    lighttpd -Df /etc/lighttpd/lighttpd.conf
  6. DoOn
    18/10/2009 à 16:30 | #6

    Bonjour à tous!
    J’ai remarqué que lorsque que je lance l’adresse http://localhost/ à partir de mon iphone ça fonctionne parfaitement. Par contre si je suis connecté avec un ordi sur le même réseau local que mon iphone en WIFI et que je lance l’adresse http://iplocaldeiphone/ le css lié à mes fichiers html ou php ne fonctionne pas. je vois le contenu mais plus de style sur la page…Savez-vous d’où vient la cause ?

  7. 18/10/2009 à 16:53 | #7

    Peut-être as-tu écrit en dur http://localhost/ dans les URL d’appel de tes feuilles CSS, ce qui ne marchera forcément pas depuis un autre ordinateur.

    Essaye de mettre les adresses des fichiers relativement à la page dans ton code source.

  8. BestPig
    03/11/2009 à 15:11 | #8

    Merci, très intéressant comme tuto.

  1. Pas encore de trackbacks