Opaze

Aller au contenu | Aller au menu | Aller à la recherche

mercredi 5 octobre 2011

Activer PHP sous Mac OS X.7 alias Lion

Petit billet de mise à jour pour Lion

sh-3.2# apachectl -v
Server version: Apache/2.2.19 (Unix)
Server built:   Jun 16 2011 22:09:54

sh-3.2# php -v
PHP 5.3.6 with Suhosin-Patch (cli) (built: Jun 16 2011 22:26:57) 
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies

Les versions ne sont pas à la traine et ça c'est bien !

Pour activer PHP, je commence par configurer le mot de passe root (on peut jouer avec les sudo mais ça me gonfle ;-))

MacProCyb:~ Cyb$ sudo passwd root
Changing password for root.
New password:
Retype new password:

On passe root :

MacProCyb:~ Cyb$ su 
Password:
sh-3.2# whoami
root

On regarde les droits dans le dossier de config d'apache :

sh-3.2# cd /etc/apache2/
sh-3.2# ls -l
total 96
drwxr-xr-x  13 root  wheel    442 17 jui 07:11 extra
-r--r--r--   1 root  wheel  24330 23 sep 20:26 httpd.conf
-r--r--r--   1 root  wheel  24330 23 sep 20:26 httpd.conf.default
-rw-r--r--   1 root  wheel    485 23 sep 20:26 httpd_ACSServer.conf
-rw-r--r--   1 root  wheel   3699 23 sep 20:26 httpd_devicemanagement.conf
-rw-r--r--   1 root  wheel     62 23 sep 20:26 httpd_podcastlibrary.conf
-rw-r--r--   1 root  wheel  12958 23 sep 20:26 magic
-rw-r--r--   1 root  wheel  50020 23 sep 20:26 mime.types
drwxr-xr-x   4 root  wheel    136 17 jui 07:11 original
drwxr-xr-x   4 root  wheel    136 17 jui 07:11 other
drwxr-xr-x   3 root  wheel    102 24 sep 01:21 users
drwxr-xr-x   6 root  wheel    204 23 sep 20:26 webapps

On voit que httpd.conf est en lecture seule. On le passe en écriture pour le root :

sh-3.2# chmod +w httpd.conf
sh-3.2# ls -l
total 96
drwxr-xr-x  13 root  wheel    442 17 jui 07:11 extra
-rw-r--r--   1 root  wheel  24330 23 sep 20:26 httpd.conf
-r--r--r--   1 root  wheel  24330 23 sep 20:26 httpd.conf.default

Ok. Maintenant on peut le modifier :

sh-3.2# vi httpd.conf

Il faut chercher la ligne suivante et la décommenter :

#LoadModule php5_module libexec/apache2/libphp5.so

Après avoir enregistré, on redémarre Apache. Soit par l'interface graphique (Préférence/Partage/) en décochant puis recochant "Partage Web". Soit en ligne de commande :

sh-3.2# apachectl restart

On créé un petit fichier de test :

echo "<?php echo phpinfo(); ?>" > /Library/WebServer/Documents/info.php

http://127.0.0.1/info.php

A vous de jouer !

PS : fonctionne aussi dans votre dossier personnel si vous l'avez activé.

jeudi 17 juillet 2008

Entêtes HTTP pour l'envoi de fichiers à la sortie standard

Envoyer un fichier à la volée depuis un script PHP vers un navigateur client n'est pas forcément chose difficile mais peut très vite tourner à la crise de nerf... 

Problème rencontré : le téléchargement du fichier est bien proposé sous Firefox mais impossible de faire fonctionner la même chose sous Internet Explorer !! Pourquoi ? Parce qu'IE est restrictif (Firefox est à l'inverse bien plus permissif) et qu'il faut savoir lui parler correctement...

Le code suivant fonctionne sous Firefox mais pas sous IE :

header( 'Content-type: application/zip');
header( 'Content-length: '.$iSize );
header( 'Content-disposition: attachment; filename="'.$sNomFichier.'"');

Pour que l'envoi du fichier fonctionne sous IE, il est important de lui envoyer les bonnes entêtes HTTP :

header( 'Pragma: public' );
header( 'Content-Description: File Transfer' );
header( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );
header( 'Content-Transfer-Encoding: binary' );
header( 'Expires: 0' );
header( 'Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT' );
header( 'Cache-Control: private', false );
header( 'Content-type: application/zip' );
header( 'Content-length: '.$iSize );
header( 'Content-disposition: attachment; filename="'.$sNomFichier.'"' );

Ces entêtes sont données pour l'envoi d'un fichier Zip ("Content-type: application/zip"). A vous d'adapter ce code en indiquant le type MIME correspondant au fichier que vous devez envoyer !

dimanche 30 mars 2008

Activation du serveur Apache et PHP sous Leopard

Dans la dernière version de Mac OS X (10.5 alias Leopard) est inclut PHP 5. À cette date c'est actuellement la version 5.2.5 qui est installée. Apache est toujours de la partie mais cette fois en version 2.

macyb:~ Cyb$ apachectl -v
Server version: Apache/2.2.8 (Unix)
Server built:   Feb 20 2008 12:01:56

macyb:~ Cyb$ php -v
PHP 5.2.5 (cli) (built: Feb 20 2008 12:30:47) 
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies

Cela simplifie déjà une bonne partie de l'installation.

Pour activer Apache il n'y a rien de plus simple. Rendez-vous dans les Préférences système puis dans Partage. Ensuite activez le Partage web. La pastille passe au vert, apache vient d'être lancé. Lancez un navigateur avec http://localhost/ comme URI. Magnifique ! La page par défaut d'apache : on peut continuer.

Dans la configuration d'Apache, le module PHP n'est pas chargé par défaut. Voici comment y remédier :

macyb:~ Cyb$ sudo vi /etc/apache2/httpd.conf 

WARNING: Improper use of the sudo command could lead to data loss
or the deletion of important system files. Please double-check your
typing when using sudo. Type "man sudo" for more information.

To proceed, enter your password, or type Ctrl-C to abort.

Password:

Une fois votre mot de passe entré, cherchez dans le fichier la ligne suivante :

#LoadModule php5_module        libexec/apache2/libphp5.so

Décommentez-la et enregistrez (echap, puis :wq). Rechargez apache.

macyb:~ Cyb$ sudo apachectl restart

Si vous avez été attentifs lors de l'activation d'apache, vous avez remarqué qu'il y a un site global pour la machine et un site pour chaque utilisateur. Le tilde n'étant pas très sexy dans une URI, on va s'intéresser au site de la machine. Son emplacement est dans /Library/WebServer/Documents/ ou directement via le Finder Bibliothèque -> WebServer -> Documents. Supprimez le contenu du dossier. Créez un fichier de test nommé index.php qui contient le phpinfo :

<?php
phpinfo();
?>

Retournez dans votre navigateur et actualisez. Vous devez visualiser à présent le détail de la configuration de PHP.