php shell_exec() la commande ne fonctionne pas
Je suis en train de lancer une .sh fichier à partir de php.
J'ai essayé de le faire avec shell_exec(). mais sa ne fonctionne pas
J'ai appelé de nombreuses questions liées à la ce dans le débordement de la pile, mais ne pouvait pas résoudre
mon code php(web.php)
<?php
echo shell_exec('/var/www/project/xxe.sh');
echo "done";
?>
seulement fait est imprimé. mais c'est de travailler à partir de la borne(php /var/www/project/web.php)
Dans xxe.sh je fais appel à un fichier python
python vin.py
J'ai aussi changé les permissions du fichier en 777 pour les deux .sh n .py fichiers
s'il vous plaît aider
- Comment allez-vous déterminer que c'est "pas de travail"? Quels effets secondaires ne vin.py que vous êtes enceinte, mais ne pas les voir?
- Comme par le docs, "Il n'est pas possible de détecter des erreurs d'exécution à l'aide de cette fonction. exec() doit être utilisée lors de l'accès au programme de sortie de code est nécessaire"
- Dans le fichier python je suis en train de stocker des valeurs dans la base de données. quand je lance le fichier php sur le navigateur, il n'est pas de stocker toutes les valeurs
Vous devez vous connecter pour publier un commentaire.
Si elle fonctionne bien dans la coquille, je pense que apache chrooté. Donc php ne peut pas trouver /var/...
Ou de l'utilisateur de httpd utilisateur n'est pas autorisé à entrer dans /var/...
Si vous êtes bon à PHP. Open dir /var/... Et readdir() et vérifier le répertoire existe et vérifier l'existence du fichier.
Cette question pourrait vous aider. numérisation /home/avec les fonctions opendir()
file_exists()
etis_executable()
respectivement. Je vais modifier ma réponse ce week-end.Si vous dire que cela fonctionne sur le terminal et non pas sur apache, apache
php.ini
fichier peut être la désactivation de l'utilisation deshell_exec()
.Voir http://www.php.net/manual/en/ini.core.php#ini.disable-functions
Votre apache
php.ini
fichier peut ressembler à quelque chose commeSupprimer
shell_exec
à partir de cette liste et redémarrez le serveur web, même si c'est un risque pour la sécurité et je ne le recommande pas.php.ini
temporairement et voir si cela fait une différence.Tout en essayant d'exécuter un script déclenché par github post-recevoir webhook.
Ici est où mon répertoire du projet est situé à(clone git repo):
J'ai créer un script dans le répertoire ci-dessus appelé webhook.php:
Exécuter la commande suivante dans le répertoire /var/www/html
Un Test de http://www.myserver.com/my-repo/webhook.php
Ajouter le chemin d'accès à votre script pour github webhooks.
Le problème est généralement que lorsque vous exec code à partir de php, il est exécuté en tant que serveurs web de l'utilisateur www-data dans beaucoup de distributions linux. Normalement, cet utilisateur ne dispose pas d'un environnement mis en place, et de ce fait pas de CHEMIN. En utilisant les chemins d'accès complets dans vos fichiers, vous pouvez généralement éviter cela.
xxe.sh
J'ai été coincé dans ce problème pendant plusieurs heures.
J'ai pensé à une solution.
1. déplacez votre script dans un fichier python "script.py" et placez ce fichier dans la racine du serveur.
2. shell_exec("python script.py");
Toute façon, ça fonctionne pour moi.
Sur mon hôte, j'ai dû donner un chemin d'accès différent pour mon fichier php à exécuter à partir d'shell_exec().
Cela n'a pas fonctionné
shell_exec('/usr/bin/php backgroundtask.php');
.Alors que ce n'était
shell_exec('/opt/php/php-5.5.0/bin/php backgroundtask.php');
.Vous pouvez visiter cette Référence.
J'ai eu le même problème parce que PHP barres obliques inverses.
PHP échappe à l'inverses, de sorte que la commande qui atteint le shell
je lui ai donc donné de commande comme ceci
Vous devez double-escape les barres obliques inverses: une fois pour PHP et une fois pour le shell.
J'ai essayé tout ce qui est ici et rien n'a fonctionné.
Ce qui a finalement résolu pour moi a été l'aide de ce qui suit avant le shell_exec: