web-dev-qa-db-fra.com

Pourquoi ce script php n'exécute-t-il pas le script bash?

Pourquoi ne puis-je pas exécuter ce script bash en php? J'ai essayé exec() ainsi que Shell_exec().

index.php

<?php
$old = getcwd();
echo $old;
chdir($old);
$message=exec("a.sh");
print_r($message);
?>

cendre

#!bin/bash
echo "i am a" > /opt/lampp/htdocs/a.txt
echo "Done"

J'ai essayé chdir comme suggéré ici, ainsi que j'ai vérifié mon disable_functions dans php.ini, il n'a rien. J'ai également vérifié d'autres questions, mais aucune ne semble résoudre mon problème.

1
Optimus Prime

Tout d’abord, assurez-vous que Shebang est exactement comme suit:

#!/bin/bash

Deuxièmement, assurez-vous que le script est exécutable à l'aide de la commande suivante dans le terminal:

chmod +x /path/to/a.sh

Et troisièmement, vous devez utiliser le chemin complet du script bash ou, dans votre cas, vous pouvez utiliser:

$message=exec("$old/a.sh");

De plus, les deux commandes suivantes de votre script php n’ont aucun sens:

$old = getcwd();
chdir($old);

Ils sont équivalents à chdir(getcwd()), qui modifie le répertoire en cours en ... le répertoire en cours, donc rien ne se produit.

2
Radu Rădeanu