2017-10-11 3 views
0

Je rencontre un problème avec PHP shell_exec().PHP shell_exec cesse de travailler

Contexte: Je l'ai utilisé shell_exec() pour accéder à une cible Linux embarqué (c.-à-Raspberry Pi.) via un navigateur web, en utilisant HTML JavaScript (AJAX) et PHP qui tous fonctionne très bien (comme je suis conscient des problèmes de sécurité autour de ceci, mais ne s'applique pas pour le faire). Actuellement, je suis en utilisant PHP v 5.6.31 et Apache2 v 2.4.27 qui semblent stables.

Problème Après une utilisation prolongée, je remarque que shell_exec() devient non-réactif? L'exemple suivant est enregistré dans /var/apache2/logs/error_log

... PHP Warning: shell_exec(): Impossible d'exécuter la commande/sbin/ifconfig ....

Le serveur Web continue de travailler activement et de diffuser des pages au navigateur. Je peux exécuter ifconfig via une fenêtre de terminal (SSH/serial) qui fonctionne. La fonctionnalité Shell_exec() n'est pas restaurée tant que les services Apache2 ne sont pas redémarrés. J'ai mis à jour l'Apache2 et PHP. mais cela n'a pas résolu le problème.

J'ai lu autour de cela et soupçonne que les ressources pourraient être la question, à savoir la collecte des ordures. J'ai essayé de mettre à jour les valeurs suivantes dans php.ini(session.gc_probability, session.gc_divisor) mais pas de chance.

Vos suggestions/expérience en la matière serait appréciée :)

vous remerciant à l'avance.

+0

est-ce que quelqu'un de n'importe quelles méthodes d'extraction de données. Im obtenir le sentiment que PHP + Apache est un moyen lent et coûteux (ressources affamées) d'interroger une cible Linux intégrée – joebloggs

+0

... ressemble à l'utilisation de websockets est une meilleure façon de mettre en œuvre ce processus d'interrogation du système. – joebloggs

+0

Je rétracte ma déclaration précédente, on dirait que le problème d'exec est toujours là avec websockets. Actuellement obtenir PHP: Avertissement: exec(): Impossible de fourchette [pwd] dans/path/to/websocket_server.php' – joebloggs

Répondre

0

avez-vous essayé de changer la permission du script pour permettre à l'application apache/PHP d'y accéder?

+0

autorisations déjà définies - script exécuter pour commencer par .. – joebloggs

0

shell_exec() attendra le script qu'il exécute pour terminer l'exécution avant de continuer. Quel que soit votre exécution est le problème.

+0

point pris à bord, mais ce n'est pas le cas pour celui-là. problème toujours présent lors de l'utilisation d'autres applications – joebloggs