Auf einigen Servern darf PHP Shell-Befehle nicht über shell_exec ausführen. Wie kann ich feststellen, ob der aktuelle Server es erlaubt, Shell-Befehle über PHP auszuführen oder nicht? Wie kann ich die Ausführung von Shell-Befehlen über PHP aktivieren?PHP - Wissen, ob Server erlaubt shell_exec
Antwort
Prüfen Sie zuerst, dass es aufrufbar ist und dann, dass es nicht deaktiviert ist:
is_callable('shell_exec') && false === stripos(ini_get('disable_functions'), 'shell_exec');
Dieser allgemeine Ansatz für jede integrierte Funktion funktioniert, so dass Sie es genericize können:
function isEnabled($func) {
return is_callable($func) && false === stripos(ini_get('disable_functions'), $func);
}
if (isEnabled('shell_exec')) {
shell_exec('echo "hello world"');
}
Hinweis stripos
zu verwenden , weil PHP-Funktionsnamen Groß- und Kleinschreibung nicht beachten.
Und Sie sollten wahrscheinlich prüfen, ob Safe-Mod auch aktiviert ist. –
@ChristopherWill: [Abgesicherter Modus ist in 5.3 veraltet und wirft ein fatales in 5.4] (http://php.net/manual/en/features.safe-mode.php), also habe ich es nicht eingeschlossen. Fehle ich etwas, indem ich es nicht einschließe (außer offensichtlich für <= 5.2, aber das ist EOL)? – bishop
Ah, ich wusste gar nicht, dass das veraltet ist. Danke für das Update. Ich denke, das war's. –
können Sie überprüfen die availablility der Funktion selbst:
if(function_exists('shell_exec')) {
echo "exec is enabled";
}
By the way: Gibt es eine spezielle Anforderung verwenden '' shell_exec '' statt '' exex ''?
Note:
This function can return NULL both when an error occurs or the program
produces no output. It is not possible to detect execution failures using
this function. exec() should be used when access to the program exit code
is required.
EDIT # 1
Wie DanFromGermany wies darauf hin, werden Sie wahrscheinlich dann prüfen, ob es ausführbar ist. So etwas wie dies tun würde, es
if(shell_exec('echo foobar') == 'foobar'){
echo 'shell_exec works';
}
EDIT # 2
Wenn das obige Beispiel Warnungen erzeugen können Sie es in einer geeigneteren Weise tun könnte. Nur see this SO answer.
Nein. Die Funktion ist deaktiviert, aber sie existiert. Das funktioniert nicht. – DanFromGermany
-1 'function_exists' reicht nicht aus, um" enable "zu testen und' shell_exec' aufzurufen, um zu sehen, ob es "funktioniert". – bishop
@Bischof Ja, Sie haben völlig Recht. Deshalb habe ich meine Antwort aktualisiert und einen Hinweis auf eine nette SO-Antwort eingefügt. –
- 1. PHP shell_exec Befehl mit variabler
- 2. PHP und shell_exec
- 3. PHP lesen shell_exec Live-Ausgabe
- 4. PHP shell_exec Befehl funktioniert nicht
- 5. php exec und shell_exec funktioniert nicht
- 6. Lauf Macports installierten Programme von PHP shell_exec
- 7. Curl-Befehlszeile funktioniert, php shell_exec() nicht
- 8. shell_exec() timeout management & exec()
- 9. Wie kann man wissen, ob eine Sitzung
- 10. Variablen an shell_exec() übergeben?
- 11. PHP: open_basedir erlaubt Pfad
- 12. Inkscape in PHP kann nicht ausgeführt werden shell_exec() Befehl
- 13. Unterschied zwischen System und Shell_Exec
- 14. php shell_exec() Hilfe zum Ausführen eines Skripts im Hintergrund benötigt
- 15. Wissen, ob ein Dienst installiert ist
- 16. PHP shell_exec(), exec() und system() gibt nur Teilausgabe zurück
- 17. shell_exec eines PhantomJS-Skriptes tötet PHP-FPM und Apache
- 18. Wie kann ich wissen, ob dieser Code korrekt ausgeführt wurde?
- 19. PHP-Funktion zu wissen upload_max_filesize
- 20. Wie kann ich shell_exec() von PHP Webhook aufrufen?
- 21. Probleme Terminal Sitzungen mit PHP zu lösen shell_exec()
- 22. Permission Fehler durch Ausführen Bash-Skript über PHP shell_exec
- 23. apache2 & PHP: führe einen Befehl von shell_exec aus
- 24. Wie führe ich PHP shell_exec eine Java-Klasse parallel?
- 25. Fail2Ban - manuell ip aus PHP-Skript mit exec oder shell_exec
- 26. PHP shell_exec Fehler nach dem Upgrade auf Windows 10
- 27. Fehler beim Senden von SMS durch PHP mit shell_exec() Befehl
- 28. Ausgabe Shell-Ausgabe von benutzerdefinierten Datei über Shell_Exec in PHP
- 29. Android, wie wissen, ob Taschenlampe auf
- 30. Wissen, ob mein Element übergelaufen ist
'Wie kann ich die Ausführung von Shell-Befehlen über PHP aktivieren?' Nur in der Root-Konfiguration. Es ist eine Sicherheitsfunktion. –
' Php echo ini_get ('disable_functions'); ?> ' – DanFromGermany