2010-12-14 5 views
0

Voici ma commande:shell_exec ne fonctionne pas

sudo /usr/local/bin/jpegoptim --max=50 /home/someuser/public_html/reports/images/r121662.jpg 

Cette commande est censé compresser une image. J'ai essayé d'exécuter cette commande en utilisant l'opérateur backtick et shell_exec, ni ne fonctionnera. Le fichier ne se compresse pas.

Mais cette commande s'exécute lorsque je l'exécute directement dans le shell connecté en tant que someuser. J'ai modifié sudoers pour accepter la commande sans nécessiter de mot de passe. Le fichier est compressé lorsque je l'exécute dans le shell. Apache est configuré pour s'exécuter avec suPHP, et les fichiers PHP appartiennent également à someuser. J'ai en outre assuré cela en écrivant un script php de test juste en disant system(id); et en l'exécutant dans le navigateur. Cela me dit que le script est en cours d'exécution par someuser.

De plus, safe_mode est désactivé.

EDIT: Ok, je l'ai à la sortie l'erreur

sudo: sorry, you must have a tty to run sudo 

Maintenant, qu'est-ce que cela veut dire ?!

+0

Est-ce que ça sort quelque chose quand vous l'exécutez dans shell? – Catalin

+0

Non, j'ai essayé de faire écho à la sortie, pas de sortie du tout – HyderA

+0

pouvez-vous sudo toute autre commande et cela fonctionne? – JohnSmith

Répondre

1

Grâce à Catalin, j'ai pu obtenir une sortie. Il a dit sudo: sorry, you must have a tty to run sudo qui a exigé d'être désactivé pour someuser. C'est la meilleure solution que j'ai, s'il y a un moyen de désactiver requiretty pour un seul utilisateur appelant une seule commande, s'il vous plaît faites le moi savoir.

+0

Heureux je pourrais aider avec le débogage: P – Catalin

+0

Vous pouvez allumer requiretty pour un seul utilisateur avec cette entrée sur sudoers: Defaults: someuser! Requiretty – timh

0

sudo nécessite typiquement une entrée de terminal (c'est-à-dire, must have a tty) car il tentera de demander un mot de passe à l'utilisateur avant de vous autoriser à exécuter une commande. Avez-vous vraiment besoin d'utiliser sudo pour lancer la commande? Essayez de supprimer le sudo.

+0

Obtenez une erreur d'autorisations sans sudo – HyderA

+0

Pouvez-vous fournir le message d'erreur spécifique? Quelles sont les permissions sur '/ home/someuser/public_html/reports/images/r121662.jpg' et'/home/someuser/public_html/reports/images/'? –

0

Essayez sudo -S pour voir si le réglage pour lire le mot de passe de stdin (même s'il n'en a pas besoin) passera le test pour un tty.