Maison  >  Article  >  développement back-end  >  Comment résoudre le problème d'erreur d'exécution php

Comment résoudre le problème d'erreur d'exécution php

藏色散人
藏色散人original
2022-01-28 10:43:053226parcourir

Solution à l'erreur php exec : 1. Modifiez l'autorisation d'exécution de ping ou la commande correspondante ; 2. Complétez le chemin complet de la commande avec "exec('/usr/sbin',$output);"; la variable d'environnement Ajouter un répertoire cible.

Comment résoudre le problème d'erreur d'exécution php

L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur DELL G3

Comment résoudre le problème d'erreur d'exécution php ?

0. Description

En php, nous pouvons utiliser exec() pour exécuter des commandes système, mais parfois nous rencontrons un échec d'exécution de commande exec(), ou s'il y en a n'est pas un retour, expliquons-le ci-dessous : exec()来执行系统命令,但有时我们会遇到exec()命令执行不成功,或者无返回的情况,下面来说明一下:

1.函数

  exec ( string $command [, array &$output [, int &$return_var ]] ) : string
  参数说明:
  1.$command   要执行的命令
  2.$output  执行结果
  3.$return_var 若同时设置 $output 和此变量,命令执行后的返回状态会被写入到此变量

2.例子

  exec("ping www.baidu.com", $output);

正常来说执行结果会跟在服务器上直接执行ping没区别,但是由于某些原因会导致意外情况,下边针对两种情况作出说明,以及解决办法

2.1 权限问题

问题

当我们在服务器上直接执行linux系统命令时(此处以ping为例),执行权限取决于我们登陆用户的权限,如果我们登陆用户为root ,则执行ping的时候是用root来执行。但当我们在网站上访问的时候,我们此时的用户为www,如果不修改ping的执行权限的话,是无法执行成功的。

解决

修改ping或者对应命令的执行权限
2.2 命令路径问题

问题

还有一种情况,当我们用exec执行某个命令时,不报错,也不返回结果,原因是此命令没有在环境变量配置的目录下即/etc/profile文件中,以ifconfig为例,我们可以用whereis ifconfig,找出此命令具体路径,比如路径在/usr/sbin下,两种解决办法:

解决

1 复制命令到/usr/bin下,也就是环境变量下的目录(不太推荐)
2 直接将命令全路径补全exec('/usr/sbin',$output);(推荐)
3 在环境变量中增加目标目录例如增加/usr/sbin
1. Fonction
rrreee

2. Exemple rrreeeNormalement, le résultat de l'exécution sera le même que celui de l'exécution de ping directement sur le serveur, mais inattendu. des situations peuvent survenir pour certaines raisons. Vous trouverez ci-dessous les descriptions des deux situations et solutions

2.1 Problèmes d'autorisation
🎜Problèmes🎜🎜Lorsque nous exécutons des commandes système Linux directement sur le serveur (ici avec ping par exemple), l'autorisation d'exécution dépend des autorisations de notre utilisateur connecté. Si notre utilisateur connecté est root, alors root sera utilisé pour exécuter 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 les autorisations d'exécution de ping ou des commandes correspondantes🎜
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 ou renvoyée. . En conséquence, la raison est que cette commande ne se trouve pas dans le répertoire où les variables d'environnement sont configurées, c'est-à-dire le fichier /etc/profile en prenant comme ifconfig. un exemple, on peut utiliser whereis ifconfig, connaître le chemin spécifique de cette commande, par exemple, le chemin est sous <code>/usr/sbin, deux solutions : 🎜🎜Solution 🎜🎜1 Copiez la commande dans /usr/bin code>, c'est-à-dire le répertoire sous la variable d'environnement (non recommandé)
2 Complétez directement le chemin complet de la commande exec('/usr/sbin',$output);(recommended) )
3 Ajoutez le répertoire cible à la variable d'environnement, par exemple, ajoutez /usr/sbin vers l'annuaire🎜🎜🎜Apprentissage recommandé : "🎜Tutoriel vidéo PHP🎜"🎜

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn