Directive #! /usr/bin/python3 ignorée

@jpty @Salvialf @Mips

Bon vous m’avez empêché de dormir :wink:

Mais c’est pas grave …

En faite le plugin n’est pas si mal écrit que ça c’est plutôt sa documentation qui aide pas dans cette affaire.

Si l’on regarde bien le code de la classe sur la partie case ‹ script ›.

case 'script':
if($this->getType() == 'info' && isset(script::$_requet_cache[$request])){
$result = script::$_requet_cache[$request];
}else{
if (strpos($request, '.php') !== false) {
$request_shell = new com_shell('php ' . $request . ' 2>&1');
} elseif (strpos($request, '.rb') !== false) {
$request_shell = new com_shell('ruby ' . $request . ' 2>&1');
} elseif (strpos($request, '.py') !== false) {
$request_shell = new com_shell('python ' . $request . ' 2>&1');
} elseif (strpos($request, '.pl') !== false) {
$request_shell = new com_shell('perl ' . $request . ' 2>&1');
} 

else {$request_shell = new com_shell($request . ' 2>&1');}

Après avoir tester tout un tas d’extension possible le else final tente simplement d’exécuter le fichier.

Il est donc très simple d’enlever l’extention .py au script pour qu’il soit executer

un détail, ne pas oublier la directive en première ligne du script

#!/usr/bin/env python3

qui dans cet exemple exécutera du python3.

Faut t’il qu’il soit exécutable … 3 solutions.

1 passer par l’éditeur du plugin-script au moment de la sauvegarde des droits d’exécution sont donnés
2 attendre ou lancer une sauvegarde
3 utiliser chmod chown

Bon je vous laisse le PHP et retourne finir ma nuit avec mon python :wink:

PS : Faudrait faire une correction de la documentation pour spécifier cette possibilité.

3 « J'aime »