4D permet d’exécuter directement des scripts PHP, donnant ainsi accès à toute la richesse des librairies utilitaires disponibles via PHP. Ces librairies fournissent en particulier des fonctions de (liste non exhaustive) :
- chiffrage (MD5) et hachage,
- manipulation des fichiers ZIP,
- manipulation d’images,
- accès LDAP,
- accès COM (pilotage des documents MS Office), etc.
Pour exécuter un script ou une fonction PHP, vous devez utiliser la commande PHP Execute ou des system workers.
Pour une description complète des commandes et de la syntaxe PHP, veuillez vous référer à l’abondante documentation PHP disponible sur Internet. A titre d’exemple, voici des adresses de sites de référence :
http://fr.php.net/manual/fr/
http://php.developpez.com/
http://www.phpfrance.com/
Pour utiliser PHP avec 4D, vous devez utiliser un interpréteur PHP. L'interpréteur PHP doit respecter deux conditions :
- il doit être compilé en fastCGI,
- il doit être présent sur la même machine que 4D.
Vous devez configurer l'interpréteur de manière à ce qu’il écoute sur une adresse et un port TCP spécifiques. Ces paramètres peuvent être définis soit via les Propriétés de la base, soit pour la session via la commande SET DATABASE PARAMETER. Bien entendu, dans ce cas vous devez gérer vous-même le démarrage et le fonctionnement de l’interpréteur.
Pour télécharger et installer un interpréteur PHP, vous avez deux possibilités :
- Télécharger PHP depuis le site officiel de PHP. Sous Windows, vous pouvez sélectionner votre version. Sur macOS, vous devez compiler votre propre version, ou trouver une version pré-compilée sur d'autres sites.
- Télécharger PHP pour macOS et Windows depuis la page de téléchargement produit de 4D. Notez que cette version, utilisée dans 4D jusqu'à 4D v20 R2, n'est plus maintenue.
Pour plus d'informations sur le téléchargement, la compilation et l'installation de PHP sur Windows ou macOS, consultez cet article du blog 4D : Deprecation of PHP commands and removal of 4D built-in PHP interpreter.
Le fichier d’initialisation php.ini personnalisé doit être placé dans le dossier Resources de la base. Le fichier php.ini permet notamment de déclarer l’emplacement des extensions PHP. Si ce fichier n’est pas présent lors du premier appel, 4D le crée avec les options de configuration adaptées.
Le fichier d'initialisation php.ini est placé dans le dossier Resources du projet.
Le fichier php.ini peut être utilisé, plus particulièrement, pour déclarer l'emplacement des extensions PHP. Si ce fichier n'est pas présent lors du premier appel à PHP, 4D le créera avec des options de configuration par défaut.
Si vous n'utilisez pas le fichier php.ini par défaut de 4D, vous devez vous assurer que le php.ini que vous utilisez contient les entrées suivantes :
Notez que la version actuelle du site officiel de PHP ne charge pas par défaut le package mbstring (qui est requis par 4D). Si vous l'utilisez, vous devrez peut-être ajouter ces lignes au fichier php.ini :
extension_dir = "./ext/"
extension=mbstring
Note à propos du timeout
Si la durée du traitement PHP est relativement longue (plus de 30 secondes), une erreur "timeout" sera renvoyée par défaut dans 4D et le traitement échouera. Dans ce cas, vous pouvez modifier le délai d'attente par défaut afin d'allouer plus de temps à l'exécution de PHP. Il y a deux façons de le faire :
- en paramétrant la variable max_execution_time in the php.ini dans le fichier php.ini (passer une valeur en secondes). Attention : ce réglage affecte tous les scripts.
- en appelant la commande set_time_limit(nbSec) dans le script d'exécution PHP qui effectue le traitement long. Passez la durée maximale allouée à l'exécution du script PHP en nbSec. Nous vous recommandons d'utiliser ce paramètre car il n'affecte que ce script. En général, pour des raisons de sécurité, il est préférable de conserver une valeur de temporisation plus faible pour les scripts PHP.