2010-12-01 46 views
1

Nous sommes passés de Slackware à CentOS ici, cela fonctionnait bien alors sans préavis, php a arrêté d'exécuter des appels externes tels que les appels à "wc" et "spamc". Tous ces appels apparaissent sur error_log comme:php ne peut pas exécuter de commande externe?

sh:/usr/bin/spamc: Permission refusée

Les chemins sont corrects. Nous avons les permissions définies correctement et Apache est supposé être capable d'exécuter les fichiers sans problème. Nous sommes NOT sur safe_mode et nous n'avons pas de set base_dir. Ce n'est pas SELinux, ou du moins sestatus dit que SELinux est désactivé.

Résumé:

  • PHP ne peut pas exécuter quoi que ce soit à travers exec() ou popen()
  • chemin vers les binaires sont corrects.
  • Nous ne sommes pas en mode sans échec
  • Nous n'avons pas base_dir mis
  • autorisations sur les fichiers binaires utilisateur apache permettent de les exécuter
  • SELinux est désactivé
  • disable_functions dans php.ini est vide
  • Nous avons aucune idée pourquoi il ne fonctionne pas

version PHP 5.3.3 et CentOS 5.5

Quelqu'un at-il une idée de ce qui pourrait se passer? Merci d'avance

+0

Pourrait probablement être mieux répondu sur Server Fault ou Webmasters: http://serverfault.com/ ou http://webmasters.stackexchange.com/ – Orbling

+0

Cette question est mieux adaptée à http://serverfault.com/ –

+0

@ Andre Garzia - Quelle est votre commande complète? – ajreal

Répondre

1

trouvé l'erreur. J'essayais d'exécuter/usr/bin/tidy par exemple, le dossier usr avait une autorisation 644 qui s'apparente à l'horreur lovecraftian dans mon livre. Je pourrais travailler parce que j'étais root. Je l'ai compris après être devenu fou et décidé de vérifier les permissions sur tous les composants de chemin de la commande de la racine/dossier au binaire bien rangé, j'ai trouvé toutes les permissions correctement définies mais les perms du dossier usr étaient complètement vissés.

Ceci est corrigé.

+0

Je ne peux accepter ma propre réponse que dans deux jours :-( –

2

SELinux bloque vos tentatives d'exécution. Je vous recommande de créer des règles qui vous permettent d'exécuter le sous-ensemble de commandes externes requises et de le charger en tant que module.

+0

SELinux est désactivé. –

+0

@Andre: Très bien. Je vais laisser cette réponse pour les futurs chercheurs cependant. –

+0

merci pour l'aide de toute façon. –

0

Est-ce que PHP s'exécute comme Apache sur le serveur? Je pensais que ce couru comme .. Personne ne

+0

PHP s'exécute comme n'importe quel paramètre utilisateur 'Utilisateur' d'Apache spécifie. – Powerlord