Chapitre 14 · 14.5
Paramètres PHP par dossier et via .htaccess
Parfois, vous souhaitez qu'un dossier fonctionne différemment du reste de votre site web. Par exemple une ancienne boutique en ligne dans un sous-dossier qui ne peut pas encore passer à la nouvelle version de PHP, ou un script qui a besoin de plus de mémoire. Cela est possible avec un fichier .htaccess dans ce dossier. Nos serveurs utilisent LiteSpeed, et LiteSpeed lit les règles PHP dans .htaccess.
Attention : Une erreur dans .htaccess peut rendre tout votre site web (ou le dossier) inaccessible avec une erreur 500. Faites d'abord une copie du fichier et testez immédiatement après l'enregistrement. Pour savoir comment trouver et modifier .htaccess, consultez Afficher et modifier les fichiers cachés comme .htaccess.
Modifier une option PHP pour un seul dossier
Placez dans le .htaccess de ce dossier des lignes comme celles-ci :
php_value upload_max_filesize 128M
php_value post_max_size 128M
php_value memory_limit 384M
php_value max_execution_time 300
Pour les options activées ou désactivées, utilisez php_flag, par exemple php_flag display_errors off.
Ces lignes s'appliquent à ce dossier et à tous les dossiers qu'il contient. Si vous les placez dans le .htaccess de public_html, elles s'appliquent à l'ensemble de votre site web.
Astuce : Vous souhaitez modifier une option pour l'ensemble de votre pack ? Faites-le plutôt dans Select PHP version (voir Options PHP : upload_max_filesize, memory_limit et max_execution_time). Ainsi, tout se trouve au même endroit et vous n'oublierez pas plus tard qu'il reste des lignes dans .htaccess.
Utiliser une autre version de PHP pour un seul dossier
L'ensemble de votre pack utilise la version que vous avez choisie dans Select PHP version. Si vous souhaitez attribuer une autre version à un dossier (ou à un sous-domaine, qui dispose aussi de son propre dossier), placez ceci dans le .htaccess de ce dossier :
<FilesMatch "\.(php)$">
SetHandler application/x-lsphp83
</FilesMatch>
Le nombre après lsphp correspond à la version sans point : 74 pour PHP 7.4, 82 pour PHP 8.2, 83 pour PHP 8.3, 84 pour PHP 8.4, et ainsi de suite. Vous pouvez choisir parmi les mêmes versions que dans Select PHP version.
Utilisez-vous dans ce dossier des extensions ou des options différentes ? Celles-ci sont liées à la version. Sélectionnez alors temporairement cette version dans Select PHP version, configurez les extensions et les options, puis remettez ensuite la version de votre pack en place. Les paramètres par version restent conservés.
Vérifier que cela fonctionne
- Créez dans le dossier un fichier info-test.php contenant cette seule ligne : <?php echo PHP_VERSION, ' ', ini_get('memory_limit');
- Ouvrez-le dans votre navigateur, par exemple https://www.votredomaine.fr/ancienneboutique/info-test.php. Vous verrez la version de PHP et la mémoire allouée.
- Supprimez ensuite immédiatement le fichier. Ne laissez aucun fichier de test contenant des informations sur votre serveur sur votre site web.
Ce qui ne fonctionne pas
- Un fichier php.ini personnel dans votre dossier n'a aucun effet. Utilisez Select PHP version ou .htaccess.
- disable_functions et open_basedir ne peuvent pas être modifiés via .htaccess. Ces paramètres relèvent de la sécurité du serveur.
- Les valeurs définies dans Paramètres PHP comme substitution pour le domaine (voir PHP Instellingen dans DirectAdmin ou Select PHP version : quelle est la différence ?) sont prioritaires sur .htaccess.
