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

Solution au problème selon lequel la fonction exec() en PHP ne parvient pas à exécuter les commandes système

不言
不言avant
2019-02-15 11:41:088177parcourir

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer