Définir les directives php.ini pour chaque site
P粉283559033
P粉283559033 2023-08-28 00:20:14
0
2
562
<p>J'ai plusieurs sites fonctionnant sur Apache2 et PHP sur Ubuntu Server. Je sais que PHP a un fichier php.ini qui vous permet de définir les valeurs de <code>upload_max_filesize</code>, <code>max_file_uploads</code> , <code>upload_tmp_dir</code> Mais cela appliquera une valeur à tous les sites. </p> <p>Comment définir des directives pour chaque site ? Par exemple : je souhaite définir le <code>upload_max_filesize</code> de <code>sitea.com</code> sur 50 M, et définir le <code>upload_max_filesize</ de <code>siteb.com< ;/code> code> est défini sur 5M. </p> <p>De même, je souhaite définir un <code>session.name</code> Comment cela peut il etre accompli? J'ai lu qu'il y a quelque chose qui s'appelle <code>PHP_INI_USER</code>, <code>PHP_INI_PERDIR</code>, <code>PHP_INI_SYSTEM</code>, <code>PHP_INI_ALL</code> Je le fais? </p>
P粉283559033
P粉283559033

répondre à tous(2)
P粉320361201

Commentaire explicite de Mike 'Pomax' Kamermans sur la façon dont cela devrait être fait. Cependant, la documentation du manuel PHP peut être un peu rebutante.

Et quelques précisions sur d'autres réponses :

  • L'utilisation d'un fichier d'analyseur PHP (comme décrit dans Lajos Arpad) ajoute des risques de sécurité et un tas d'encodage, de syntaxe et une surcharge de traitement vraiment inutile.

  • .htaccess 确实可以为某些 PHP 安装设置自定义 ini 指令,但如果您使用的是“FastCGI”或“CGI”(可能还有 suPHP) ) PHP 安装实际上会导致您的网站崩溃并出现 500 错误,因此请使用本地 .user.ini fichiers comme décrit ici. Comment retrouver mon SAPI ?

  • Seulement utilisez .htaccess si vous exécutez PHP en tant que module Apache (par exemple mod_php). Comment retrouver mon SAPI ?

PHP suPHP/FastCGI/CGI SAPI

Alors, comment votre souhait devrait-il être exaucé ?

1) Recherchez les détails de Core PHP.ini.

Lisez le fichier PHP.ini de la version actuelle de PHP.

À la ligne 180 (pour PHP 8.1), cela devrait ressembler à ceci :

Notez la valeur, Je vous recommande de la personnaliser (comme indiqué dans cet exemple). Cette valeur est le nom d'un fichier qui sera situé dans chaque compte unique sur le serveur qui contient les paramètres « locaux » spécifiques au compte pour le fichier PHP.ini global.

Le fichier commence généralement par public_html 文件夹中,因此应以 . afin qu'il soit masqué par défaut (nous en reparlerons plus tard). Si ce fichier n'existe pas, les paramètres PHP principaux du compte ne seront pas modifiés.

2) Mémorisez/définissez les noms de fichiers et créez de nouvelles règles

Vous connaissez/avez maintenant défini le nom de votre fichier PHP personnalisé ; générez maintenant le fichier dans votre compte et vous pouvez ensuite définir les paramètres PHP.ini que vous souhaitez personnaliser individuellement pour ce compte.

Par exemple : 

contiendra les exemples d'informations suivants :

;
; Some optional comment text here for human consumption
;
session.cookie_secure=1
session.save_path=/home/sitea.com_account/sessions
session.name=session-sitea
error_log=/home/sitea.com_account/errors/PHP_errors.log
upload_max_filesize=50M

Ces informations sont analysées par PHP et remplacent toute valeur correspondante dans le noyau PHP.ini, mais uniquement pour ce compte.

3) Personnalisez pour chaque compte selon vos besoins

Par exemple, pour votre fichier ini utilisateur php siteb.com, cela ressemblerait davantage à ceci :

contiendra les exemples d'informations suivants :

;
; Some optional comment text here for human consumption
;
session.cookie_secure=1
session.save_path=/home/siteb.com_account/session_b
session.name=site-b-UniqueSession
error_log=/home/siteb.com_account/errors/PHP_errors.log
upload_max_filesize=5M

Vous pouvez ensuite vérifier que ces paramètres de compte sont correctement définis en explorant phpinfo() sur chaque compte et en notant les différences locales et principales affichées.

4) Testez et confirmez

/public_html/ Le fichier principal user.ini dans le chemin doit contenir tous les fichiers nécessaires pour que chaque sous-fichier/dossier de ce compte soit traité (cela dépend parfois de la configuration exacte de votre serveur LAMP et de votre gestionnaire PHP).

Comme je l'ai dit, une fois le fichier ini de test configuré, vous devez exécuter phpinfo() pour vérifier si ses valeurs sont implémentées.

Si vous ne souhaitez pas utiliser phpinfo() 那么您可以轻松使用 [ini_get](https://www.php.net/manual/en/function .ini-get), vous pouvez facilement utiliser [ini_get](https://www.php.net/manual/en/function .ini-get) pour vider les données sensibles au journal des erreurs plutôt qu'au navigateur.

<?php
error_log("ini data for this account: ".ini_get('upload_max_filesize'));
exit;

5) Sécurité

Le fichier

user.ini se termine généralement par . 字符开头,以将其隐藏在目录中,但这并不意味着浏览器代理无法访问它,因此最好添加几行添加到您的 .htaccess pour refuser l'accès à ce fichier.

<Files .account-php81.ini>
    Require all denied
</Files>

Quelques réflexions finales :

Les valeurs principales de PHP.ini changent dans les nouvelles versions de PHP, la meilleure pratique consiste donc à utiliser différents fichiers .ini locaux pour différentes versions de PHP (.account-php80.ini, .account-php81.ini等)。请注意,每个 php.ini Core doivent tous appeler explicitement leur fichier user.ini local respectif, comme décrit à l'étape 1 ci-dessus

.

Les principes ci-dessus sont décrits dans le manuel PHP et doivent être notés :

P粉144705065

Vous pouvez les paramétrer dans le fichier .htaccess 文件来设置 PHP 配置值 - 至少对于大多数设置:如果您查看 在配置指令文档中,对于标记为 PHP_INI_PERDIR 或 PHP_INI_ALL 您可以使用 PHP php_value 或 php_flag 命令在 .htaccess de chaque site (ou même de chaque dossier) en utilisant ="https://www.php.net/manual/en/configuration.changes.php" rel="nofollow noreferrer"> "Comment pour modifier les paramètres de configuration" Documentation.

Par exemple, pour créer un fichier upload_max_filesize,请在该网站的文档根目录中创建一个 .htaccess sur votre site Web et y mettre du texte :

php_value upload_max_filesize 24M

Malheureusement, je les change dans max_file_uploadsupload_tmp_dir 是标记为 PHP_INI_SYSTEM 的设置,您无法在 .htaccess fichiers...

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal