Maison > Article > développement back-end > Solution au problème selon lequel la fonction exec() en PHP ne parvient pas à exécuter les commandes système
Le contenu de cet article concerne la solution au problème de la fonction exec() en PHP qui ne parvient pas à exécuter les commandes système. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. j'espère que cela vous aidera. Vous avez aidé.
0. Description
En php, nous pouvons utiliser exec() pour exécuter des commandes système, mais parfois nous rencontrons une exécution infructueuse de la commande exec() Ou là. Il n'y a pas de retour, veuillez expliquer ci-dessous :
1 Fonction
exec ( string $command [, array &$output [, int &$return_var ]] ) : string 参数说明: 1.$command 要执行的命令 2.$output 执行结果 3.$return_var 若同时设置 $output 和此变量,命令执行后的返回状态会被写入到此变量
Exemple
exec("ping www.baidu.com", $output);
. Normalement, le résultat de l'exécution sera le même que celui de l'exécution du ping directement sur le serveur, mais pour certaines raisons, des situations inattendues peuvent survenir. Voici une explication des deux situations et de la solution
2.1. Problèmes d'autorisation
Problèmes
Lorsque nous exécutons des commandes système Linux directement sur le serveur (en prenant ping comme exemple ici), les autorisations d'exécution dépendent des autorisations de l'utilisateur auquel nous nous connectons .Si nous nous connectons Si l'utilisateur est root, alors root est utilisé pour exécuter le ping. Mais lorsque nous accédons au site Web, notre utilisateur est actuellement www. Si nous ne modifions pas l'autorisation d'exécution de ping, il ne sera pas exécuté avec succès.
Solution
Modifier l'autorisation d'exécution du ping ou de la commande correspondante
2.2 Problème de chemin de commande
Problème
Il existe une autre situation. Lorsque nous utilisons exec pour exécuter une commande, aucune erreur n'est signalée et aucun résultat n'est renvoyé La raison est que cette commande n'est pas dans le répertoire où la variable d'environnement est configurée, cela. c'est-à-dire le fichier /etc/profile. Vers ifconfig Par exemple, nous pouvons utiliser `whereis
ifconfig pour connaître le chemin spécifique de cette commande. Par exemple, le chemin est sous /usr/sbin`. :
Solution
1 Copiez la commande dans /usr/bin (déconseillé)
2 Complétez directement le chemin complet de la commande exec('/usr /sbin',$output); (recommandé)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!