Pour éditer le wiki, il faut demander un compte à un Lapin !
Difference between revisions of "RaspberryPi"
m |
|||
(11 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | ===Configuration | + | ===Configuration RasPi=== |
− | ==PREPARATION ( | + | == PREPARATION LINUX == |
+ | |||
+ | *1) Charger l'image sur 'http://www.raspberrypi.org/downloads' prendre 'Raspbian “wheezy”' en 'Direct download' (http://downloads.raspberrypi.org/images/raspbian/2013-05-25-wheezy-raspbian/2013-05-25-wheezy-raspbian.zip) | ||
+ | *2) Décompresser la dans votre ~ | ||
+ | *3) Connecter votre carte mémoire à votre ordinateur | ||
+ | *4) Chercher le nom du lecteur de votre carte dans /dev/ (nous l'appellerons "<SDCard>") | ||
+ | *5) Allez dans GParted et supprimez toutes les partitions de la SDCard. | ||
+ | *6) Ouvrez un terminal et tapez "dd if=~/2013-05-25-wheezy-raspbian.img of=/dev/<SDCard>" | ||
+ | *7) Allez dans GParted et cherchez la SDCard, si vous voyez une petite partition ext2 à 4 Ko du début c'est que ça devrais être bon. Dans le cas contraire l'image doit être corrompue et il faut recommencer à l'étape 1. | ||
+ | *8) Suivez les instruction 'PARAMETRES'. | ||
+ | |||
+ | |||
+ | ==PREPARATION Windows== | ||
1) Trouver une carte SD HDTC 8GB au minimum de classe 4 (prendre une marque), l’insérer dans l’ordinateur | 1) Trouver une carte SD HDTC 8GB au minimum de classe 4 (prendre une marque), l’insérer dans l’ordinateur | ||
Line 70: | Line 82: | ||
sudo apt-get update && sudo apt-get upgrade | sudo apt-get update && sudo apt-get upgrade | ||
− | Confirmer et quand l’installation est finie | + | Confirmer et quand l’installation est finie, rebootez |
+ | |||
4) Créer un nouvel utilisateur | 4) Créer un nouvel utilisateur | ||
Line 80: | Line 93: | ||
5) Paramétrer ssh | 5) Paramétrer ssh | ||
− | + | *Changement de clés | |
rm /etc/ssh/ssh_host_* | rm /etc/ssh/ssh_host_* | ||
dpkg-reconfigure openssh-server | dpkg-reconfigure openssh-server | ||
− | + | *installation | |
Sudo apt-get install ssh | Sudo apt-get install ssh | ||
sudo /etc/init.d/ssh start | sudo /etc/init.d/ssh start | ||
Line 101: | Line 114: | ||
sudo apt-get install alsa-utils | sudo apt-get install alsa-utils | ||
Utilisez la commande lsmod pour vérifier si un module audio est chargé : | Utilisez la commande lsmod pour vérifier si un module audio est chargé : | ||
+ | |||
lsmod | grep snd | lsmod | grep snd | ||
Line 113: | Line 127: | ||
sudo modprobe snd_bcm2835 | sudo modprobe snd_bcm2835 | ||
La sortie son se fait par défaut par HDMI, j'utilise le moniteur de mon PC qui n'a pas d'enceintes. Donc il faut taper : | La sortie son se fait par défaut par HDMI, j'utilise le moniteur de mon PC qui n'a pas d'enceintes. Donc il faut taper : | ||
+ | |||
Pour une sortie jack : | Pour une sortie jack : | ||
+ | |||
sudo amixer cset numid=3 1 | sudo amixer cset numid=3 1 | ||
+ | |||
Pour une sortie HDMI : | Pour une sortie HDMI : | ||
+ | |||
sudo amixer cset numid=3 2 | sudo amixer cset numid=3 2 | ||
+ | |||
Voilà, Raspbian est prêt à l'emploi. | Voilà, Raspbian est prêt à l'emploi. | ||
7) Python GPIO à télécharger de http://code.google.com/p/raspberry-gpio-python/ | 7) Python GPIO à télécharger de http://code.google.com/p/raspberry-gpio-python/ | ||
− | A PRIORI, GPIO est installé par défaut avec RASPIAN. Pour une mise à jour télécharger la dernière version à l’adresse ci-dessus : | + | A PRIORI, GPIO est installé par défaut avec RASPIAN. Pour une mise à jour télécharger la dernière version à l’adresse ci-dessus : |
+ | |||
a. Ouvrir la console et taper wget http://raspberry-gpio-python.googlecode.com/files/RPi.GPIO-0.5.2a.tar.gz | a. Ouvrir la console et taper wget http://raspberry-gpio-python.googlecode.com/files/RPi.GPIO-0.5.2a.tar.gz | ||
+ | |||
b. Décompresser : tar xvzf RPi.GPIO-0.5.2a.tar.gz | b. Décompresser : tar xvzf RPi.GPIO-0.5.2a.tar.gz | ||
+ | |||
c. Taper cd RPi.GPIO-0.5.2a | c. Taper cd RPi.GPIO-0.5.2a | ||
+ | |||
d. Regarder les instructions du fichier install.txt pour installer le package: | d. Regarder les instructions du fichier install.txt pour installer le package: | ||
Sudo apt-get dist-upgrade | Sudo apt-get dist-upgrade | ||
− | Sudo apt-get install python-rpi.gpio python3-rpi.gpio | + | Sudo apt-get install python-rpi.gpio python3-rpi.gpio |
==Télécharger== | ==Télécharger== | ||
Line 137: | Line 160: | ||
Après installation, exécuter la commande scrot dans le terminal afin de faire une copie écran du bureau dans le répertoire courant. Faire scrot –h pour voir les options disponibles | Après installation, exécuter la commande scrot dans le terminal afin de faire une copie écran du bureau dans le répertoire courant. Faire scrot –h pour voir les options disponibles | ||
sudo apt-get install scrot | sudo apt-get install scrot | ||
− | |||
MOC : écouter de la musique sur la console | MOC : écouter de la musique sur la console | ||
Line 145: | Line 167: | ||
options pour mocp | options pour mocp | ||
− | • - | + | • -s— Arrête la musique sans quitter mocp |
− | • - | + | • -G— Met en pause la playlist, ou bien remet en lecture si en pause |
− | • - | + | • -f— Passe au morceau suivant de la playlist |
− | • - | + | • -r— Passe au morceau précédent de la playlist |
− | • - | + | • -i— Affiche de l'information sur le morceau en cours sur le terminal |
− | • - | + | • -x— Arrête la musique et quitte mocp |
NB: il faut installer une extension pour pouvoir lire les fichiers audio wma: | NB: il faut installer une extension pour pouvoir lire les fichiers audio wma: | ||
Line 233: | Line 255: | ||
sudo fdisk -l | sudo fdisk -l | ||
− | ==Que faire sans clavier== | + | ==Transfert de fichiers== |
+ | Vous voulez mettre vos films, vos mp3 sur le RasPi? Vous pouvez utiliser Filezilla avec les paramètres suivants: | ||
+ | |||
+ | Hote : adresse IP du RasPi à obtenir par ifconfig dans la console (aussi appelé terminal) du RasPi | ||
+ | |||
+ | Protocole : SFTP – SSH … | ||
+ | |||
+ | Type d’authentification : Normale | ||
+ | |||
+ | Login : login du RPi (en général pi si vous n’avez pas changé la config) | ||
+ | |||
+ | MDP : votre mdp | ||
+ | |||
+ | ==Que faire sans clavier?== | ||
*Méthode 1 (vous disposez d'une souris et d'un écran): | *Méthode 1 (vous disposez d'une souris et d'un écran): | ||
1) Mettre sous tension RasPi et le connecter à votre ordinateur par un cable ethernet (RasPi et votre ordinateur sont ainsi en réseau local). | 1) Mettre sous tension RasPi et le connecter à votre ordinateur par un cable ethernet (RasPi et votre ordinateur sont ainsi en réseau local). | ||
+ | |||
2) Dans le terminal de RasPi, utilisez le clavier virtuel pour taper: | 2) Dans le terminal de RasPi, utilisez le clavier virtuel pour taper: | ||
+ | |||
hostname -I | hostname -I | ||
+ | |||
3) Si une adresse IP s'affiche: c'est elle qu'il faut utiliser dans votre connexion ssh depuis votre ordinateur pour prendre le contrôle du RasPi | 3) Si une adresse IP s'affiche: c'est elle qu'il faut utiliser dans votre connexion ssh depuis votre ordinateur pour prendre le contrôle du RasPi | ||
− | 4) Sinon, il va falloir en attribuer une à votre RasPi. Utilisez une adresse du type 169.254.0.X où X est arbitraire entre 2 et | + | |
+ | 4) Sinon, il va falloir en attribuer une à votre RasPi. Utilisez une adresse du type 169.254.0.X où X est arbitraire entre 2 et 254. Prenons X=2 par exemple. | ||
sudo ifconfig eth0 169.254.0.2 | sudo ifconfig eth0 169.254.0.2 | ||
− | 5)La commande hostname -I doit cette fois-ci retourner une réponse. Vous pouvez tester un ping depuis RasPi vers l'ordinateur pour vérifier que tout est en ordre de marche. En général, l'adresse de l'ordinateur sera 169.255.0.1. . Pour la trouver sous Windows, faire un click droit sur la connexion réseau correspondante (elle indique une connectivité inexistante et limitée - c'est normal), statut, support, détails. | + | 5) La commande hostname -I doit cette fois-ci retourner une réponse. Vous pouvez tester un ping depuis RasPi vers l'ordinateur pour vérifier que tout est en ordre de marche. En général, l'adresse de l'ordinateur sera 169.255.0.1. . Pour la trouver sous Windows, faire un click droit sur la connexion réseau correspondante (elle indique une connectivité inexistante et limitée - c'est normal), statut, support, détails. |
+ | Vous pouvez utiliser SSH. | ||
+ | |||
+ | 6) La nouvelle adresse IP du RasPi sera perdue au redémarrage du RasPi. Pour ne pas perdre l'adresse, on peut modifier directement le fichier de configuration. On commence par faire une copie: | ||
+ | |||
+ | sudo cp /boot/cmdline.txt /boot/cmdline.normal | ||
+ | |||
+ | 7) Editez le fichier original avec l'éditeur de base: | ||
+ | |||
+ | sudo nano /boot/cmdline.txt | ||
+ | |||
+ | A la fin du fichier, mettre un espace et rajouter | ||
+ | |||
+ | ip=169.254.0.2 | ||
+ | |||
+ | taper CTRL+X et CTRL+Y pour sauvegarder et sortir du fichier. | ||
+ | |||
+ | 8) Faîtes une copie de ce fichier: | ||
+ | |||
+ | sudo cp /boot/cmdline.txt /boot/cmdline.direct | ||
+ | |||
+ | 9) Vous pouvez éteindre. Au prochain démarrage de RasPi, l'adresse IP sera automatiquement mise à 169.254.0.2 | ||
+ | |||
+ | 10) Pour alterner entre les configurations: | ||
+ | |||
+ | sudo cp /boot/cmdline.normal /boot/cmdline.txt | ||
+ | sudo cp /boot/cmdline.direct /boot/cmdline.txt | ||
+ | |||
+ | *Méthode 2 (vous n'avez pas de souris, ni d'écran): | ||
+ | Il s'agit de faire la manipulation 6) à 9) ci-dessus directement sur la carte SD. Le fichier à copier et modifier se trouve dans /boot/cmdline.txt. Le problème se pose lorsqu'on n'utilise pas linux puisque Windows ne peut pas lire directement la partition de la carte SD. Pire, il n'y a pas de solution FIABLE pour ECRIRE dessus. Pour ne pas trop s'embêter, faîtes-vous une clef usb Linux sur laquelle vous redémarrerez (j'ai testé avec: http://isn.dnsalias.org/index.php). |
Latest revision as of 19:10, 17 July 2013
Contents
Configuration RasPi
PREPARATION LINUX
- 1) Charger l'image sur 'http://www.raspberrypi.org/downloads' prendre 'Raspbian “wheezy”' en 'Direct download' (http://downloads.raspberrypi.org/images/raspbian/2013-05-25-wheezy-raspbian/2013-05-25-wheezy-raspbian.zip)
- 2) Décompresser la dans votre ~
- 3) Connecter votre carte mémoire à votre ordinateur
- 4) Chercher le nom du lecteur de votre carte dans /dev/ (nous l'appellerons "<SDCard>")
- 5) Allez dans GParted et supprimez toutes les partitions de la SDCard.
- 6) Ouvrez un terminal et tapez "dd if=~/2013-05-25-wheezy-raspbian.img of=/dev/<SDCard>"
- 7) Allez dans GParted et cherchez la SDCard, si vous voyez une petite partition ext2 à 4 Ko du début c'est que ça devrais être bon. Dans le cas contraire l'image doit être corrompue et il faut recommencer à l'étape 1.
- 8) Suivez les instruction 'PARAMETRES'.
PREPARATION Windows
1) Trouver une carte SD HDTC 8GB au minimum de classe 4 (prendre une marque), l’insérer dans l’ordinateur
2) La formatter à l’aide de SDFormatter (avant de le lancer allez dans OPTIONS : sélectionnez QUICK FORMAT et format size ajustment=ON) à télécharger ici : https://www.sdcard.org/downloads/formatter_4/
3) Télécharger NOOBS sur http://www.raspberrypi.org/downloads
4) Décompresser le fichier et COPIER tout son contenu dans la carte SD
5) Insérez la carte SD dans le RasPi
PARAMETRES
1) Brancher tout ce qui peut l’être avant mise sous tension : souris, clavier, écran, câble ethernet sur votre router
2) Mettre sous tension
3) Dans certaines circonstances, il peut être nécessaire de configurer manuellement la connexion réseau
4) Sélectionner Raspbian : des scripts sont lancés puis un menu apparaît
5) expand_rootfs : partitionner si cela n’a pas été fait lors du transfert de l’image vers la carte SD (avec Gparted par exemple).
6) Configurez le clavier : Allez sur la ligne : configure_keyboard Set keyboard layout » Select Keyboard model : Generic 105-key (intl) PC Keyboard layout : Other Country of origin for the keyboard : French Keyboard layout : French Key to function as AltGr : The default for the keyboard layout Compose key : No compose key Use Control+Alt+Backspace to terminate the X server? : No
7) Change pass : changer le mot de passe de « pi » l’utilisateur par défaut : « raspberry »
8) Change locale : Allez sur la ligne : change_locale Set locale » Select Locales to be generated: Décochez la case utilisant la touche ESPACE : [] en_GB.UTF-8 UTF-8 Cochez les cases en utilisant la touche ESPACE :
[*] fr_FR ISO-8859-1
[*] fr_FR.UTF-8 UTF-8
Default locale for the system environment : fr_FR.UTF-8
9) Change time zone : Europe, Paris
10) Overclock : laisser par défaut
11) Set split memory : laisser par défaut
12) Ssh : pour contrôler RasPi à travers le réseau depuis un ordinateur via Putty (Windows)
13) Boot_behavior : mode graphique
14) Update : pas besoin si on vient de télécharger la dernière version de l’OS
15) On effectue un redémarrage. Au prompt, taper : "sudo shutdown -r now" ou "sudo reboot"
RASPIAN
1) Tester la connexion internet en utilisant le navigateur Midori
2) Ouvrir LXTE terminal pour l’invite de commande
3) Mise à jour des programmes (si la carte SD n’est pas forcément avec la dernière version de l’OS) :
sudo apt-get update && sudo apt-get upgrade Confirmer et quand l’installation est finie, rebootez
4) Créer un nouvel utilisateur
Pour créer un nouvel utilisateur username : sudo adduser username un mot de passe devra Pour supprimer l’utilisateur username : sudo deluser username --remove-home (supprime le répertoire personnel et les courriels) ou bien: deluser username --remove-all-files (supprime tous les fichiers dont username est propriétaire).
5) Paramétrer ssh
- Changement de clés
rm /etc/ssh/ssh_host_* dpkg-reconfigure openssh-server
- installation
Sudo apt-get install ssh sudo /etc/init.d/ssh start Le serveur SSH est maintenant fonctionnel. Il faut récupérer l'adresse IP locale du RPi . ifconfig Sur votre PC, en console ou avec PuTTY taper et suivre les instructions : ssh pi@123.123.123.05 L'accès au RPi est désormais permis à distance. Voir : http://www.tropfacile.net/doku.php/raspberry-pi/comment-se-connecter-en-ssh
6) Vérifier le son cat /proc/asound/cards
0 [ALSA ]: BRCM bcm2835 ALSbcm2835 ALSA - bcm2835 ALSA bcm2835 ALSA Si les pilotes ne sont pas installés : sudo apt-get install alsa-utils Utilisez la commande lsmod pour vérifier si un module audio est chargé :
lsmod | grep snd
snd_bcm2835 19889 1 snd_pcm 74834 1 snd_bcm2835 snd_seq 52536 0 snd_timer 19698 2 snd_seq,snd_pcm snd_seq_device 6300 1 snd_seq snd 52489 7 snd_seq_device,snd_timer,snd_seq,snd_pcm,snd_bcm2835 snd_page_alloc 4951 1 snd_pcm Si rien ne s'affiche c'est que le module audio n'est pas chargé en mémoire, pour charger le pilote audio (driver) snd_bcm2835, on va utiliser la commande modprobe: sudo modprobe snd_bcm2835 La sortie son se fait par défaut par HDMI, j'utilise le moniteur de mon PC qui n'a pas d'enceintes. Donc il faut taper :
Pour une sortie jack :
sudo amixer cset numid=3 1
Pour une sortie HDMI :
sudo amixer cset numid=3 2
Voilà, Raspbian est prêt à l'emploi.
7) Python GPIO à télécharger de http://code.google.com/p/raspberry-gpio-python/
A PRIORI, GPIO est installé par défaut avec RASPIAN. Pour une mise à jour télécharger la dernière version à l’adresse ci-dessus :
a. Ouvrir la console et taper wget http://raspberry-gpio-python.googlecode.com/files/RPi.GPIO-0.5.2a.tar.gz
b. Décompresser : tar xvzf RPi.GPIO-0.5.2a.tar.gz
c. Taper cd RPi.GPIO-0.5.2a
d. Regarder les instructions du fichier install.txt pour installer le package: Sudo apt-get dist-upgrade Sudo apt-get install python-rpi.gpio python3-rpi.gpio
Télécharger
CLAVIER VIRTUEL: (pour ceux qui n'ont pas de clavier dédié à leur RasPi) sudo apt-get install matchbox Il se trouve désormais dans les accessoires
SCROT: pour faire des copies d’écran. Après installation, exécuter la commande scrot dans le terminal afin de faire une copie écran du bureau dans le répertoire courant. Faire scrot –h pour voir les options disponibles sudo apt-get install scrot
MOC : écouter de la musique sur la console sudo apt-get install moc (installation du package) pour le lancer ATTENTION : mocp (pas moc) options pour mocp
• -s— Arrête la musique sans quitter mocp
• -G— Met en pause la playlist, ou bien remet en lecture si en pause
• -f— Passe au morceau suivant de la playlist
• -r— Passe au morceau précédent de la playlist
• -i— Affiche de l'information sur le morceau en cours sur le terminal
• -x— Arrête la musique et quitte mocp
NB: il faut installer une extension pour pouvoir lire les fichiers audio wma:
sudo apt-get install moc-ffmpeg-plugin
CHROMIUM : navigateur alternatif
sudo apt-get install chromium-browser
OPENOFFICE.ORG: bureautique
sudo apt-get install openoffice.org
Attention à l’espace mémoire. Il est nécessaire d’ajuster la partition au préalable si cela n’a pas été fait (cela a été normalement réalisé par expand rootfs dans PARAMETRES).
LAMP : serveur
Linux Apache MySQL PHP.
(sudo apt-get update)
sudo apt-get install apache2 php5 php5-mysql mysql-server
voir la doc pour la suite
PYTHON: modules supplémentaires
Voici d'autres librairies dont vous pourriez avoir peut-être avoir besoin avec Python:
sudo apt-get install python-smbus ipython bluetooth bluez-utils python-cwiid python-scipy python-numpy python-pygame python-setuptools libsdl-dev
Commandes utiles
- Démarrer le serveur X:
startx
- Accéder au panneau de contrôle Raspbia:
sudo raspi-config
- Changer les paramètres de l'affichage graphique (commenter, dé-commenter ou modifier les 4 lignes -- "Ctrl+o" pour enregistrer les changements, "Entrée" pour valider, "Ctrl+q" pour quitter nano) sudo nano /boot/config.txt
overscan_left=-40 overscan_right=-40 overscan_top=-40 overscan_bottom=-40
- Changer la sortie audi:
sudo amixer cset numid=3 1 #sortie jack sudo amixer cset numid=3 2 #sortie HDMI
- Redémarrer le RPi:
sudo shutdown -r now ou sudo reboot
- Arrêter le RPi:
sudo shutdown -h now ou sudo halt
- Connaître la température du CPU:
/opt/vc/bin/vcgencmd measure_temp
- Lire une vidéo avec OMXPlayer:
omxplayer /emplacement/vers/la/vidéo omxplayer --win "0 0 X Y" /emplacement/vers/la/vidéo pour voir le film en plein écran, avec X et Y, respectivement la longueur et la largeur de l'écran.
- Recherche de programme:
sudo apt-cache search nom_du_programme
- Installation de programme:
sudo apt-get install nom_du_programme
- Suppression de programme:
sudo apt-get remove nom_prg (laisse intact les fichiers de config) sudo apt-get purge nom_prg (élimine tout)
- Editeur de texte:
sudo nano /etc/network/interfaces
- ping:
ping -c 1 www.raspberrypi.org
- Afficher les partitions:
sudo fdisk -l
Transfert de fichiers
Vous voulez mettre vos films, vos mp3 sur le RasPi? Vous pouvez utiliser Filezilla avec les paramètres suivants:
Hote : adresse IP du RasPi à obtenir par ifconfig dans la console (aussi appelé terminal) du RasPi
Protocole : SFTP – SSH …
Type d’authentification : Normale
Login : login du RPi (en général pi si vous n’avez pas changé la config)
MDP : votre mdp
Que faire sans clavier?
- Méthode 1 (vous disposez d'une souris et d'un écran):
1) Mettre sous tension RasPi et le connecter à votre ordinateur par un cable ethernet (RasPi et votre ordinateur sont ainsi en réseau local).
2) Dans le terminal de RasPi, utilisez le clavier virtuel pour taper:
hostname -I
3) Si une adresse IP s'affiche: c'est elle qu'il faut utiliser dans votre connexion ssh depuis votre ordinateur pour prendre le contrôle du RasPi
4) Sinon, il va falloir en attribuer une à votre RasPi. Utilisez une adresse du type 169.254.0.X où X est arbitraire entre 2 et 254. Prenons X=2 par exemple.
sudo ifconfig eth0 169.254.0.2
5) La commande hostname -I doit cette fois-ci retourner une réponse. Vous pouvez tester un ping depuis RasPi vers l'ordinateur pour vérifier que tout est en ordre de marche. En général, l'adresse de l'ordinateur sera 169.255.0.1. . Pour la trouver sous Windows, faire un click droit sur la connexion réseau correspondante (elle indique une connectivité inexistante et limitée - c'est normal), statut, support, détails. Vous pouvez utiliser SSH.
6) La nouvelle adresse IP du RasPi sera perdue au redémarrage du RasPi. Pour ne pas perdre l'adresse, on peut modifier directement le fichier de configuration. On commence par faire une copie:
sudo cp /boot/cmdline.txt /boot/cmdline.normal
7) Editez le fichier original avec l'éditeur de base:
sudo nano /boot/cmdline.txt
A la fin du fichier, mettre un espace et rajouter
ip=169.254.0.2
taper CTRL+X et CTRL+Y pour sauvegarder et sortir du fichier.
8) Faîtes une copie de ce fichier:
sudo cp /boot/cmdline.txt /boot/cmdline.direct
9) Vous pouvez éteindre. Au prochain démarrage de RasPi, l'adresse IP sera automatiquement mise à 169.254.0.2
10) Pour alterner entre les configurations:
sudo cp /boot/cmdline.normal /boot/cmdline.txt sudo cp /boot/cmdline.direct /boot/cmdline.txt
- Méthode 2 (vous n'avez pas de souris, ni d'écran):
Il s'agit de faire la manipulation 6) à 9) ci-dessus directement sur la carte SD. Le fichier à copier et modifier se trouve dans /boot/cmdline.txt. Le problème se pose lorsqu'on n'utilise pas linux puisque Windows ne peut pas lire directement la partition de la carte SD. Pire, il n'y a pas de solution FIABLE pour ECRIRE dessus. Pour ne pas trop s'embêter, faîtes-vous une clef usb Linux sur laquelle vous redémarrerez (j'ai testé avec: http://isn.dnsalias.org/index.php).