Installer Apache2 / PHP5 avec macports

Bon, je m'y mets... ayant besoin d'options de compilation spécifique avec apache2 et php5, j'ai décidé d'installer apache2 et php5 de manière à pouvoir compiler php5.
Il y a quelques temps, j'avais installé les outils XCode pour avoir accès aux macports, et après quelques recherches, je me suis rendu compte que ça pouvait être utile pour installer tout ça.
Après avoir installé macports, j'ai juste un problème, la commande "sudo port" ne fonctionne pas... je dois me placer dans le répertoire qui contient la commande pour pouvoir l'exécuter... Autre problème, je ne sais pas exactement comment ça va fonctionner, car je ne l'ai jamais fait... Je me pose des questions quant à l'ajout d'extensions à la compilation de php, est-ce que je dois passer des arguments de compilation, quand, comment, etc... Qu'à celà ne tienne, je tente le coup et je verrais bien si ça fonctionne :
cd /opt/local/bin sudo ./port install apache2
et voici "la fin" du résultat de cette commande (car il y a auparavant toute une série de dépendances qui s'installent tels que : apr, db46, expat, gperf, libiconv, ncursesw, ncurses, readline, sqlite3, apr-util, zlib, openssl, bzip2 et pcre dans mon cas) :
---> Fetching apache2 ---> Attempting to fetch httpd-2.2.14.tar.bz2 from <a href="http://apache.mirroring.de/httpd<br /> --->" title="http://apache.mirroring.de/httpd<br /> --->">http://apache.mirroring.de/httpd<br /> ---></a> Verifying checksum(s) for apache2 ---> Extracting apache2 ---> Applying patches to apache2 ---> Configuring apache2 ---> Building apache2 ---> Staging apache2 into destroot ---> Creating launchd control script ########################################################### # A startup item has been generated that will aid in # starting apache2 with launchd. It is disabled # by default. Execute the following command to start it, # and to cause it to launch at startup: # # sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist ########################################################### Note: apache2 installs files outside the common directory structure. ---> Installing apache2 @2.2.14_1+darwin+darwin_9+preforkmpm ---> Activating apache2 @2.2.14_1+darwin+darwin_9+preforkmpm ---> Cleaning apache2
Je désactive ensuite l'installation par défaut d'apache2 (/private/etc/apache2) via Préférences Système -> Partage -> Partage web puis je démarre la nouvelle install d'apache avec :
sudo /opt/local/apache2/bin/apachectl start
Je vais sur http://localhost/ et j'ai droit à un beau "It work's"
Je fais ensuite un petit
sudo ./port search php
afin de voir les extensions disponibles pour php.
J'en installe quelques unes :
php5-gd, php5-suhosin, php5-zip, php5-amf, php5-curl, php5-eaccelerator, php5-exif, php5-ftp, php5-gettext, php5-iconv, php5-imagick, php5-mbstring, php5-mcrypt, php5-mysql, php5-odbc, php5-openssl, php-soap, php5-sockets, php5-sqlite, php5-SPL_Types, php5-xmlrpc, php5-xsl, php5-xslcache (un bon petit paquet, en fait, mais je n'ai peur de rien !!)
puis enfin, j'installe php5 via la ligne de commande suivante :
sudo ./port -v install php5 +apache2 +mysql5 +sqlite +pear
J'ai rajouté le "-v" pour passer en mode "verbose" et ainsi voir toutes les sorties debug, les lignes de commandes d'installation et de compilation... C'est un beau fouillis que voilà, mais au moins je peux voir un peu ce qui se passe, et si j'ai des erreurs bloquantes, mais ça ne semble pas être le cas.
Une fois l'installation terminée, je créer un fichier php.ini dans /opt/local/etc/php5 en copiant le fichier php.ini-development avec la commande
sudo cp /opt/local/etc/php5/php.ini-development /opt/local/etc/php5/php.ini
Je l'ouvre, je décommente et j'édite la variable date.timezone pour y mettre la valeur Europe/Berlin et je décommente les autres variables date.xxx en dessous (4 variables)
J'installe ensuite le module pour Apache :
cd /opt/local/apache2/modules sudo /opt/local/apache2/bin/apxs -a -e -n "php5" libphp5.so
Puis j'ouvre le fichier /opt/local/apache2/conf/httpd.conf pour y modifier la valeur suivante :
-DirectoryIndex index.html +DirectoryIndex index.html index.php
Toujours dans ce même fichier, je rajoute tout à la fin les lignes suivantes :
# Load the PHP module LoadModule php5_module modules/libphp5.so # # Include PHP configurations # Include conf/extra/mod_php.conf
pour charger php5.
Enfin, je relance apache :
sudo /opt/local/apache2/bin/apachectl -k restart
Et je teste mon fichier info.php situé à la racine, histoire de voir ce que ça donne.
Youpi, j'ai toutes les extensions que j'avais chargé auparavant, et ça semble fonctionnel.
J'avais un problème sur un script qui utilise la fonction 'imageftbbox'. Je teste mon script, ça passe également. Bon, ben au moins je n'aurais pas fait tout ça pour rien.
Reste maintenant à reconfigurer le tout pour que mysql soit pris en charge et que mes différents sites fonctionnent comme avant. Il y a encore du pain sur la planche 
Lorsque j'ai installé l'extension mysql, j'ai eu la sortie suivante :
---> Computing dependencies for php5-mysql ---> Fetching php5-mysql ---> Verifying checksum(s) for php5-mysql ---> Extracting php5-mysql ---> Configuring php5-mysql ---> Building php5-mysql ---> Staging php5-mysql into destroot ---> Installing php5-mysql @5.3.1_2+mysqlnd To use mysqlnd with a local MySQL server, edit /opt/local/etc/php5/php.ini and set mysql.default_socket, mysqli.default_socket and pdo_mysql.default_socket to /opt/local/var/run/mysql5/mysqld.sock ---> Activating php5-mysql @5.3.1_2+mysqlnd ---> Cleaning php5-mysql
Mais à priori, mysql est fonctionnel sur l'installation que j'avais faite il y a longtemps. Pour le moment je ne touche à rien. Si j'ai des problèmes, alors je verrais pour y remédier. Comme on dit, le mieux est l'ennemi du bien
Je peux encore utiliser la commande suivante pour faire en sorte qu'Apache démarre automatiquement au démarrage de l'ordinateur :
sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
Au final, plutôt sympa, ce macports, une fois qu'on a compris comment s'en servir.
source :
Installer Apache, MySQL et PHP sur Mac OS 10.5 avec MacPorts
macports (Peter's Software Cheatsheet)
UsingMacPortsQuickStart
