Un vrai tuto en bonne et dûe forme, pas sûr. Y a deux mois, je n'y connaissais strictement rien à Linux et j'y suis donc allé à tatons (avec l'aide du frangin) sans forcément tout écrire... mais disons que je vais essayer de donner les grandes lignes du truc (je décris le truc sans aucune garantie, je décline toute responsabilité s'il y a le moindre problème) :
- installer ipkg
- installer les packages nécessaires à la compilation native (je me souviens notamment d'optware-devel me semble-t-il, faire des recherches sur le forum Syno)
- pour le sujet qui nous intéresse, je sais qu'il faut aussi installer les packages zlib et openssl mais il y en a peut-être d'autres que j'avais installé pour d'autres besoins auparavant et qui sont nécessaires pour la compil' php. Je n'ai pas fais gaffe.
- télécharger les SOURCES de php (version Syno), de mysql (version Syno), de zlib (même version que le package ipkg installé) et d'openssl (version syno, PAS VERSION IPKG qui est moins récente, en tout cas pour mon 107+)
- créer un répertoire /usr/include
- décompresser le source zlib et copier zlib.h dans /usr/include
- décompresser le source openssl (je répète, VERSION SYNO) et faire
cp -Lr openssl-0.9.8k/include/openssl /usr/include
- décompresser le source mysql et faire
cp -r mysql-5.1.34/include /usr/syno/mysql
- faire la commande suivante
rm /usr/syno/mysql/include/Makefile.am /usr/syno/mysql/include/Makefile.in /usr/syno/mysql/include/mysql_version.h.in
- c'est là où ça se corse, il faut bidouiller un fichier mysql_config (a déposer dans /usr/syno/mysql/bin) et un mysql_version.h (à déposer dans /usr/syno/mysql/include) Le problème c'est que je ne me souviens plus des quelques modifs faites dans ces fichiers (je vais essayer de retrouver pour vous faire plaisir ).
- faire les liens suivants :
ln -s /usr/syno/mysql/lib/mysql/libmysqlclient.so.16 /usr/syno/mysql/lib/mysql/libmysqlclient.so
ln -s /opt/lib/libz.so.1.2.3 /lib/libz.so
ln -s /opt/lib/libz.so.1.2.3 /lib/libz.so.1
- Décompresser le source de php puis se placer dans ce répertoire
- Supprimer le fichier configure et faire
./buildconf --force
- faire la commande suivante :
./configure --with-config-file-path=/usr/syno/etc --with-mysql=/usr/syno/mysql --with-mysqli=/usr/syno/mysql/bin/mysql_config --enable-mbstring --enable-sockets --disable-dom --disable-libxml --disable-ipv6 --enable-pdo=shared --with-pdo-mysql=shared,/usr/syno/mysql --disable-cgi --with-openssl=shared --disable-simplexml --disable-xml --disable-xmlreader --disable-xmlwriter --without-pear --without-sqlite --without-pdo-sqlite --with-zlib-dir=shared,/opt/lib
- En raison d'un "conflit" entre les deux openssl installés, déplacer temporairement les libssl :
mv -i /opt/lib/libssl.* /opt/lib/libcrypto.* /volumeUSB1/mods/
- Compiler les extensions tant désirées :
make build-modules
- Remettre les libssl à leur place :
mv -i /volumeUSB1/mods/libssl.* /volumeUSB1/mods/libcrypto.* /opt/lib/
- Voilà ! Copier les fichiers *.so créés (répertoire /php-5.2.10/modules) dans /lib/php/extensions
- Editer /usr/syno/etc/php.ini et dans la section [Dynamic Extensions] ajouter :
extension = openssl.so
extension = pdo.so
extension = pdo_mysql.so
- Relancez apache et c'est bon !
Voilà, je suis désolé pour ce fouillis mais il faut mettre les mains dans le cambouis.
Mais maintenant, c'est le shell_exec() qui me pourrit la vie et celui qui me donnera la solution aura toute mon admiration .