J'essaie d'utiliser "googler" de jarun dans un script PHP afin de rechercher sur YouTube et trouver l'URL du premier résultat. La commande que j'exécute est googler --np --json -C -n 1 -w youtube.com -x <name of youtube video>
et fonctionne parfaitement sur ma machine locale. Voici mon code:PHP exec() fonctionne en ligne de commande mais pas en web
<?php
exec("googler --np --json -C -n 1 -w youtube.com -x thomas the dank engine", $results);
var_dump($results);
?>
Lorsque j'exécute ceci dans la ligne de commande, il fonctionne parfaitement comme il se doit, mais quand je le fais via un navigateur Web ou une requête GET, cela ne fonctionne pas. Je suis conscient qu'il est exécuté en tant qu'autre utilisateur. Dans mon cas, il est l'utilisateur www-data
, donc je donné que l'utilisateur complet autorisations sudo sans mot de passe, et a fait les commandes suivantes:
sudo -u pi googler --np --json -C -n 1 -w youtube.com -x thomas the dank engine
ainsi que
su - pi -c 'googler --np --json -C -n 1 -w youtube.com -x thomas the dank engine'
aucune de ces travaillé. Cela a-t-il un rapport avec googler? Qu'est-ce que je fais mal?
Lors de l'ajout 2>&1
à la commande, je reçois le message d'erreur suivant:
stdout encoding 'ascii' détecté. googler nécessite utf-8 pour fonctionner correctement. Un mauvais encodage peut être dû à un environnement local non UTF-8 ou à un mauvais PYTHONIOENCODING. (Pour l'enregistrement, la langue de vos paramètres régionaux est le codage des paramètres régionaux, votre PYTHONIOENCODING n'est pas défini.) Veuillez définir un paramètre régional UTF-8 (par exemple, en_US.UTF-8) ou définissez PYTHONIOENCODING sur utf-8.
Peut-être 'googler' n'est pas dans son' $ PATH', essayez d'utiliser le chemin complet. – Barmar
Capturez la sortie d'erreur avec '2> & 1' à la fin de la commande envoyée à' exec() '. – Barmar
Quelle est l'erreur réelle que PHP vous donne? – Mike