2013-06-14 6 views
0

J'essaie d'exécuter /path/to/script.pl en PHP; le script, entre autres, envoie un e-mail une fois l'exécution terminée. Lorsque je tentePHP exec() fonctionne étrangement

exec("/path/to/script.pl");

Rien ne se passe. D'autres points de données pertinentes:

print exec("whoami"); 
/path/to/script.pl 
sudo -u apache /path/to/script.pl 

Le premier, exécutez en PHP, estampes apache; la seconde, lancée dans le shell, fonctionne comme prévu (envoie l'email); le troisième, exécuté dans le shell, fonctionne également comme prévu (envoie l'email). De cela il semble que exec fonctionne correctement pour certaines commandes, et que le script fonctionne et fonctionne pour l'utilisateur httpd (apache). Le script lui-même ne gère pas les E/S de fichiers, mais il accède à une base de données MySQL et utilise Net::SMTP::TLS ainsi que LWP::Simple. Des idées sur ce qui pourrait mal tourner?

+1

Votre script doit-il être exécuté par un utilisateur apache? –

+0

Oui, c'est 'chmod 755'; Je pensais aussi que 'sudo -u apache/path/to/script.pl' revérifierait que --- c'est faux? – kyle

+1

Bizarre ... essayez de chown ce fichier à l'utilisateur Apache ... J'utilise les commandes popen et pclose et ça marche bien. Avez-vous essayé de vous vérifier php log pour l'erreur? N'oubliez pas d'activer la journalisation des erreurs php. –

Répondre

0

Crédit à Walter des commentaires pour me dire de réellement vérifier les journaux d'erreurs.

Le script était exécutable (chmod 755) mais un répertoire de la hiérarchie était rwxr-x---; la mise à jour de ce répertoire à rwxr-xr-x a résolu le problème. Chaque répertoire sur le chemin d'un script exec() 'd doit être lisible par httpd.

Problème résolu.

+0

Je suis content de t'avoir aidé. –