Difference between revisions of "PHP/fr"
m (→Bogues) |
|||
Line 514: | Line 514: | ||
Aperçu ci-dessous des problèmes en cours pour ce paquet : | Aperçu ci-dessous des problèmes en cours pour ce paquet : | ||
− | {{#bugzilla:columns=id,product,version,status,summary |sort=id|order=desc |component=smeserver-php|noresultsmessage=" | + | {{#bugzilla:columns=id,product,version,status,summary |sort=id|order=desc |component=smeserver-php|noresultsmessage="Pas trouvé de bogues ouverts."}} |
---- | ---- | ||
[[Category: Howto/fr]] | [[Category: Howto/fr]] | ||
[[Category: Webapps/fr]] | [[Category: Webapps/fr]] |
Revision as of 09:50, 2 November 2023
php logo | |
Maintainer | Unilenium, ReetP |
---|---|
Url | https://www.php.net/ |
Category | |
Tags | www, http, ssl |
Mainteneurs
Unnilennium, ReetP
Description
A partir de la version 10 du serveur Koozali SME, le module php n'est plus utilisé pour httpd. Au lieu de cela, nous nous appuyons sur php-fpm qui peut activer toutes les versions disponibles de php.
Par défaut, nous fournissons les versions suivantes :
- 54 (maintenue par Red-Hat jusqu'à CentOS 7 ; fin de vie : 30 juin 2024).
- 55,56,70,71,72 (Note : non supporté !).
- 73 (supportée jusqu'au 6 déc. 2021).
- 74 (supportée jusqu'au 28 nov. 2022).
- 80 (supportée jusqu'au 26 nov. 2023).
Clés db disponibles pour contrôler la configuration et les services PHP
Vous devez d'abord décider si vous souhaitez modifier le comportement de PHP pour une baie d'information (ibay) ou pour une version spécifique de PHP, ou pour toutes les versions de PHP.
Clés | Rôle | |
---|---|---|
php | personnalisation de /etc/php.ini | pour php54 |
php55 | personnalisation de /opt/remi/php55/root/etc/php.ini | si aucune propriété n'est définie, les propriétés des clés php seront utilisées |
php56 | personnalisation de /opt/remi/php56/root/etc/php.ini | |
php70 | personnalisation de /etc/opt/remi/php70/php.ini | |
php71 | personnalisation def /etc/opt/remi/php71/php.ini | |
php72 | personnalisation de /etc/opt/remi/php72/php.ini | |
php73 | personnalisation de /etc/opt/remi/php73/php.ini | |
php74 | personnalisation de /etc/opt/remi/php74/php.ini | |
php80 | personnalisation de /etc/opt/remi/php80/php.ini | |
php81 | personnalisation de /etc/opt/remi/php81/php.ini | |
php82 | personnalisation de /etc/opt/remi/php82/php.ini | |
php83 | personnalisation de /etc/opt/remi/php83/php.ini |
Chaque version de php a son propre service php-fpm en cours d'exécution, l'entrée de la base de données de configuration associée est (comme indiqué dans le tableau ci-dessus) php-fpm pour php (c'est-à-dire php54), php55-php-fpm pour php55 et ainsi de suite.
Si vous souhaitez vraiment désactiver une version de php, voici ce que vous devez faire pour php55, par exemple :
config setprop php55-php-fpm status disabled signal-event webapps-update
Propriétés disponibles
Voici une liste des propriétés disponibles pour configurer php. Vous devez choisir à quel niveau vous souhaitez gérer le changement.
- Voulez-vous le changement pour l'ensemble du serveur ? -- alors choisissez probablement de le changer pour la clé php) : configuration de la base de données setprop php ...
- Voulez-vous le changement pour une version spécifique de php ? -- alors vous devriez probablement le faire avec une clé php spécifique, par exemple : configuration de base de données setprop php74 ...
- Voulez-vous appliquer le changement pour une baie spécifique ? -- c'est ce que nous vous suggérons de faire dans la plupart des cas : dbaccounts setprop mabaie ..
paramètre php | propriété de la baie | propriété de php.ini | par défaut | note |
---|---|---|---|---|
- | PHPVersion | - | 74 | peut varier selon la mise à jour si laissé vide |
allow_url_fopen | AllowUrlFopen | AllowUrlFopen | off | risque de sécurité, maintenir à off |
allow_url_include | - | - | off | |
auto_prepend_file | AutoPrependFile | - | enabled | /usr/share/php/auth_translation.php sauf si désactivé |
disable_functions | DisableFunctions | - | system,show_source, symlink,exec,dl,shell_exec,passthru,phpinfo,escapeshellarg,escapeshellcmd | |
display_errors | DisplayErrors | - | off | |
error_log | - | - | /var/log/php/$key/error.log | |
error_reporting | ErrorReporting | - | E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT | |
expose_php | - | ExposePHP | Off | |
file_upload | FileUpload | - | Off | |
mail.add_x_header | - | MailAddXHeader | disabled | uniquement global, pas par version php |
mail.force_extra_parameters | MailForceSender | MailForceSender | root@$DomainName | ibayname@$DomainName pour les baies d'information |
mail.log | - | MailLog | disabled | |
max_execution_time | MaxExecutionTime | MaxExecutionTime | 30 | |
max_file_uploads | - | MaxFileUpload | 20 | |
max_input_time | MaxInputTime | MaxInputTime | 60 | |
memory_limit | MemoryLimit | MemoryLimit | 128M | |
open_basedir | PHPBaseDir | - | /home/e-smith/files/ibays/IBAYNAME/:/var/lib/php/IBAYNAME/:/usr/share/php/:/usr/share/pear/:/opt/remi/php$version/root/usr/share/pear/:/opt/remi/php$version/root/usr/share/php/ | |
post_max_size | PostMaxSize | PostMaxSize | 20M | |
security.limit_extensions | AllowPHTML | disabled | permet à php d'interpréter plus de types de fichiers (.php .htm .html .phar .phtml .xml) | |
sendmail_from | - | MailForceSender | root@$DomainName | |
sendmail_path | - | SendmailPath | /usr/sbin/sendmail -t -i | |
short_open_tag | - | ShortOpenTag | On | |
upload_max_filesize | UploadMaxFilesize | UploadMaxFilesize | 10M |
Si vous souhaitez définir une valeur spécifique pour une baie, nous montrons ici comment utiliser php80 pour la baie MABAIE et éviter d'avoir une fonction désactivée :
db accounts setprop MABAIE disable_functions none PHPVersion 80 signal-event webapps-update
Affichage des messages d'erreur
Par défaut, PHP n'affiche pas de messages d'erreur à l'écran. Parfois, vous obtenez une page blanche lors de l'exécution de scripts PHP. Habituellement, une sorte d'erreur s'est produite, mais ce texte d'erreur ne sera pas affiché car SME Server est configuré pour ne pas les afficher. Au lieu de cela, les messages d'erreur figurent dans les fichiers journaux du serveur Web et dans le fichier journal général du serveur.
Essayez d'analyser vos fichiers journaux : /var/log/httpd/error_log et /var/log/httpd/access_log et peut-être aussi /var/log/messages.
Activer les modifications pour toutes les versions de php
Si vous souhaitez l'activer (à des fins de débogage par exemple), vous pouvez le faire avec les instructions ci-dessous :
mkdir -p /etc/e-smith/templates-custom/etc/php.ini cp /etc/e-smith/templates/etc/php.ini/30ErrorHandling /etc/e-smith/templates-custom/etc/php.ini
Puis après :
sed -i /etc/e-smith/templates-custom/etc/php.ini/30ErrorHandling -e 's/display_errors.*/display_errors = On/g'
Après cela, lancez les commandes suivantes :
signal-event webapps-updates
Accédez maintenant à nouveau à votre page et voyez quelle est l’erreur.
Annuler les modifications
Si tout fonctionne, supprimez le fichier 30ErrorHandling du dossier /etc/e-smith/templates-custom/etc/php.ini et réexécutez les deux dernières lignes :
signal-event webapps-update
Activer les modifications pour une baie spécifique
Démarre SME10 et smeserver-php-3.0.0-39
db accounts setprop MABAIE DisplayErrors enabled signal-event webapps-update
Restriction d'ouverture de base
SME Server a mis en place une mesure de sécurité appelée « open basedir restriction ». Cette mesure empêche PHP d'exécuter ou d'invoquer d'autres scripts PHP en dehors de la portée de sa propre arborescence ; en d'autres termes, cela crée un « bac à sable » ou une « prison ».
La configuration globale est définie dans le fichier php.ini mais vous pouvez ajouter un modification prioritaire sur chaque baie.
Message d'erreur
La restriction d'ouverture de base PHP est habituellement indiquée à l'utilisateur dans le fichier journal /var/log/messages comme ceci :
Aug 12 17:27:42 homer httpd: PHP Warning: main(): open_basedir restriction in effect. File(/tmp/test.php) is not within the allowed path(s): (/home/e-smith/files/ibays/Primary/html/) in /home/e-smith/files/ibays/Primary/html/test.php on line 2
En général vous ne trouverez ce message que dans les fichiers journaux car, par défaut (cf. supra), PHP est configuré pour empêcher l'affichage de messages d'erreur aux utilisateurs finaux. Cela peut être modifié selon ce tutoriel en anglais.
Modification du paramètre PHPBaseDir pour une baie d'information
-
(Veuillez aussi prendre connaissance de ces instructions en anglais sur la page "commandes utiles".)
- Ouvrez un shell du serveur SME en tant qu'utilisateur root et documentez le paramètre actuel de la directive PHPBaseDir en notant le résultat de la commande suivante : db accounts getprop ibayname PHPBaseDir Attention à l'écrire à la lettre car nous en aurons besoin à l'étape suivante. Pour la baie d'information principale, le résultat de la commande ci-dessus ressemblerait normalement à ceci : /home/e-smith/files/ibays/Primary/html/
- Décidez du répertoire que vous souhaitez ajouter et lancez ce qui suit : db accounts setprop ibayname PHPBaseDir value Remplacer "ibayname" par le nom de la baie et "value" par l'ancienne valeur de la directive PHPBaseDir que vous avez écrite et deux points (:) suivis du chemin complet vers le répertoire que vous souhaitez ajouter avec une barre oblique (/), par exemple : db accounts setprop Primary PHPBaseDir /home/e-smith/files/ibays/Primary/html/:/opt/gallery2/ La commande ci-dessus permettrait à PHP d'invoquer des scripts dans le chemin /opt/gallery2 à partir du dossier HTML de la baie principale. Pour permettre le téléchargement de fichiers via http vers un wiki dénommé "ibay" : db accounts setprop wiki PHPBaseDir /home/e-smith/files/ibays/wiki/:/tmp/
- Après avoir défini le nouveau paramètre, nous devons refléter la modification dans le fichier de configuration du serveur Web et demander au serveur Web de recharger son fichier de configuration. Cela se fait en exécutant la commande suivante : signal-event ibay-modify ibayname Assurez-vous de remplacer "ibayname" par le nom de la baie que vous venez de modifier.
Upload_tmp_dir
upload_tmp_dir
From SME Server V8 up to and including SME Server V9, you could sometimes have an error thrown by PHP and would then need to specify a temporary directory (e.g. upload_tmp_dir) which is not set in php.ini. see bugzilla:6650 and bugzilla:7652. Many php applications need this setting, the best-known culprits are Wordpress, Roundcube, eGroupWare, and there are others. The symptoms observed are that you can't upload contents to the PHP application.
An easy resolution is to make a Custom Template to resolve this issue. See Uploadtmpdir.
Utilisation avancée des ressources php-fpm
Pour les baies avec php-fpm.d/ibays.conf
Pour les baies, la meilleure option est simplement d'utiliser la contribution Webhosting.
Similaire aux baies.
Pour les contributions avec php-fpm.d/www.conf
Veuillez lire Building Your Contrib cette page en anglais.
Pour vos besoins personalisés avec php-fpm.d/custom.conf
Vous pouvez construire votre propre ressource pour l'utiliser où vous voulez sur le serveur, même dans un sous-répertoire d'une baie ou à la place du php-pool normal de la baie (propriété PHPCustomPool).
Il y a deux manières de faire cela :
en utilisant db php
En utilisant le modèle par défaut : /etc/e-smith/templates/etc/php-fpm.d/custom.conf, vous pouvez configurer votre propre ressource en faisant :
db php set MYPOOLNAME pool Version 81 status enabled
Voici les propriétés supplémentaires acceptables, car si elles sont manquantes ou vides signifiera que la valeur par défaut sera utilisée.
propriété | valeur par défaut | valeurs | information |
---|---|---|---|
status | enabled | enabled, disabled | |
Version | version php à utiliser, par ex. 80 pour php 8.0 | ||
MemoryLimit | 128M | ||
MaxExecutionTime | 30 | ||
MaxInputTime | 60 | ||
AllowUrlFopen | off | ||
MaxChildren | 15 | ||
PostMaxSize | 10M | ||
UploadMaxFilesize | 10M | ||
FileUpload | enabled | ||
BaseDir | |||
DisabledFunctions | system,show_source,symlink,exec,dl,shell_exec,passthru,phpinfo,escapeshellarg,escapeshellcmd | ||
User | www | ||
Group | www | ||
DisplayErrors | disabled | ||
LogErrors | disabled | ||
MaxChildren | 15 | ||
AutoPrependFile | enabled | utilisera le fichier autoprepend | |
MailForceSender | php\@$DomainName |
Vous aurez alors besoin de deux fragments de modèle personnalisé httpd.conf pour utiliser votre ressource. Vous devrez changer MYPOOL en ce que vous voudrez :
mkdir -p /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/ vim /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/98mypoolusage
<Directory /home/e-smith/files/ibays/test/html/mysubfolder> SSLRequireSSL Options None Options +Indexes Options +FollowSymLinks DirectoryIndex index.php index.shtml index.htm index.html <FilesMatch \.php$> SetHandler "proxy:unix:/var/run/php-fpm/php80-MYPOOLNAME.sock|fcgi://localhost" </FilesMatch> AllowOverride All order deny,allow deny from all allow from all </Directory>
Puis exécutez :
signal-event webapps-update
en utilisant un modèle personnalisé
Vous pouvez écire votre propre fragment dans /etc/e-smith/templates-custom/etc/php-fpm.d/custom.conf/, par exemple : /etc/e-smith/templates-custom/etc/php-fpm.d/custom.conf/15mypool
Vous pouvez aussi avoir besoin d'écrire un fragment httpd de façon similaire à ce qui a été montré au paragraphe précédant.
Voici un exemple si vous voulez une ressource personnalisée pour votre baie, dans /etc/e-smith/templates-custom/etc/php-fpm.d/ibays.conf/15MYIBAY
{
use esmith::AccountsDB;
use esmith::php;
my $a = esmith::AccountsDB->open_ro || die "Couldn't open the accounts database";
my $ibay = $a->get("MYIBAY");
my $version = PhpFpmVersionToUse($ibay);
my $dynamic = $ibay->prop('CgiBin') || 'disabled';
my $custom = $ibay->prop('CustomPool') || undef;
next unless ($dynamic eq 'enabled' && $version eq $PHP_VERSION && $custom);
my $key = $ibay->key;
my $name = lc $key;
my $pool_name = 'php' . $version . '-' . $name;
$OUT .=<<"_EOF" if ($version eq $PHP_VERSION);
[$pool_name]
user = www
group = www
listen.owner = root
listen.group = www
listen.mode = 0660
listen = /var/run/php-fpm/$pool_name.sock
;
;
;put whatever you need there
;
;
_EOF
}
Vous devez ensuite forcer la baie à l'utiliser en faisant :
db accounts MYIBAY setprop CustomPool enabled
Cela empêchera la génération de la ressource par défaut de la baie dans ibays.conf et vous permettra d'utiliser le socket /var/run/php-fpm/php$version-$name.sock depuis votre modèle personnalisé... ou depuis la base de données php en utilisant la même clé que le nom de la baie.
Installation de Composer
https://fr.wikipedia.org/wiki/Composer_(logiciel).
Ceci est rendu délicat car nous n’avons pas configuré l'interface en lignes de commande PHP.
Mais nous pouvons l'installer comme suit avec des arguments de ligne de commande. L'exemple suivant vaut pour php74.
Téléchargement :
php74 -d allow_url_fopen=on -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
Vérification du hachage :
php74 -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Installation :
php74 -d allow_url_fopen=on ./composer-setup.php
Bogues
Veuillez ouvrir les bogues dans la section SME-Server 10.X de Bugzilla et sélectionner le composant smeserver-php ou utiliser ce lien .
Aperçu ci-dessous des problèmes en cours pour ce paquet :