2016-04-19 11 views
0

Ich versuche Linux Shell Befehl von PHP auszuführen, aber es gibt keine Ausgabe auf der Webseite. Wenn ich versuche, die PHP-Seite von Linux cosole auszuführen, funktioniert es gut.Keine Ausgabe auf der Webseite PHP beim Ausführen Shell-Befehl

PHP-Code:

<?php 
    $result = shell_exec('asterisk -rx "core show channels concise"'); 
    $ccount =shell_exec('asterisk -rx "core show channels count"'); 
    echo $result; 
    echo $ccount; 
?> 

Above-Code gibt keine Ausgabe auf der Webseite. Aber auf Linux-Konsole ist es woking. z.B.

[abc @ host sysadminman] # php myfile.php

+3

Vielleicht ist der Apache-Benutzer keine Berechtigung haben. Was zeigt das Fehlerprotokoll? – chris85

+0

müssen Sie den ausführbaren Pfad in einem Shell_Exec-Aufruf suchen. zum Beispiel/usr/bin/asterisk -rw "Kern-Show-Kanäle prägnant" – unixmiah

Antwort

0

Zu allererst Ihre Frage ist unvollständig, da Sie nicht zeigen, was Ausgang erwartet wird. Aber abgesehen davon machst du dort ein paar häufige Fehler. Zuerst testen Sie Ihr Skript als root (# php ...), aber Ihr httpd dient NICHT als root für Ihre Skripte. Deine Tests sind also nutzlos. Sie sollten zum richtigen Benutzer wechseln (am wahrscheinlichsten www-data und dann überprüfen, um Ihr Skript von Shell auszuführen. Höchstwahrscheinlich wird es für einen der beiden häufigsten Gründe fehlschlagen - unzureichende Berechtigungen $PATH Programm $PATH nicht auf den Ort zeigen, wo asterisk ist.

0

ich Marcin zustimmen.

ich würde vorschlagen, Sie Skript schreiben, diese Befehle auszuführen, und bis zu einem gewissen Speicher (wie Text oder Datenbank) führen zu setzen. cron Verwenden Sie es in root ausführen. Dann Sie die Daten lesen aus dem Speicher auf der Webseite

Wenn Sie Echtzeit-Antwort wollen, müssen Sie Cron alle t ausführen obwohl es Server-Ressource verbrauchen. Das ist ein Kompromiss, den Sie berücksichtigen müssen. Es hängt davon ab, was Sie von der Website erreichen möchten.

0

Verwenden Sie sudo, um Befehle als Root- oder Asterisk-Benutzer auszuführen. Sie können sudo so konfigurieren, dass nur bestimmte Befehle ohne Kennwort ausgeführt werden können.

0

überprüfen Sie disable_functions in php.ini. Mb shell_exec gerade weg für Web-Server

1

Asterisk Steuerbuchse Berechtigungen auch leicht in /etc/asterisk.conf geändert werden kann:

[files] 
astctlpermissions = 0660 
astctlowner = root 
astctlgroup = apache 
astctl = asterisk.ctl 
Verwandte Themen