ich einen Apache-Server auf CentOS leite und müssen einige Bash-Skripte von PHP-Seite auszuführen. Ausführen von Befehlen, die brauchen keine Schreib- oder Ausführungsrechte von PHP-Datei funktioniert (zB shell_exec (‚ls/var/www/html/scripts /‘)), aber ich habe Probleme, die Befehle ausführen, die schreiben müssen oder ausführen Genehmigung. Zum Beispiel dieser Befehle tut nichts:Run Bash-Skript von PHP-Skript
drwxr-xr-x. 2 apache apache 21 Jun 3 09:54 scripts
und test.sh Datei wie zu sehen ist, aber es gab keine Sperre:
<?php
$output = shell_exec('/var/www/html/scripts/test.sh');
echo $output;
?>
ich Apache-Benutzer Eigentümer und gewährten erforderliche Berechtigungen für Scripts-Verzeichnis gemacht.
-rwxr-xr-x. 1 apache apache 51 Jun 3 09:54 test.sh
Ich habe auch versucht, den Befehl in PHP-Datei sudo und hinzugefügt, um die Linie unten bis zum Ende der sudoers-Datei, aber nichts geändert.
apache ALL=NOPASSWD: /var/www/html/scripts/test.sh
Auch überprüfte ich PHP safe_mode, die ausgeschaltet ist, und es gibt keine Einschränkung in der php.ini-Datei:
disable_functions =
würde Ihre freundliche Hilfe sehr geschätzt.
HINWEIS:
ich meinen Bash-Skript bearbeitet und hinzugefügt sudo wie unten:
#!/bin/bash
echo "Hi from test.sh";
sudo touch /var/www/html/scripts/file.log;
Nun, wenn ich die Datei als Apache-Benutzer mit diesem Befehl ausführen, es läuft erfolgreich:
su -s /bin/sh apache -c "/var/www/html/scripts/test.sh"
Aber durch die pHP-Web-Seite läuft es nur echo „Hallo aus test.sh“; Linie. Wenn ich Protokolle überprüfen, gibt es unten Linien für Befehl ausführen oben:
su: pam_unix(su:session): session opened for user apache by root(uid=0)
sudo: apache : TTY=unknown ; PWD=/var/www/html ; USER=root ; COMMAND=/bin/touch fromweb.log
su: pam_unix(su:session): session closed for user apache
Und das erzeugte Protokoll, wenn von PHP-Web-Seite ausgeführt wird:
sudo: apache : TTY=unknown ; PWD=/var/www/html/scripts ; USER=root ; COMMAND=/bin/touch fromweb.log
Fehlende pam_unix (su: Sitzung) öffnen und schließen.
Erhalten Sie eine Fehlermeldung? – JazZ
Beachten Sie, dass der Apache-Standardbenutzer "www-data" ist. – JazZ
@JazZ keine spezielle Fehlermeldung wie die Fehlerberichterstattung ausgeschaltet ist, aber wenn ich die Bash-Datei von Befehl ausführen Aufforderung den folgenden Fehler auftritt: su -s/bin/sh Apache -c „scripts/test.sh“ Hallo von Test .sh touch: nicht berühren 'DATEI.log': Permission denied –