In PHP ist eine häufige Möglichkeit, Systembefehle auszuführen, über die Funktion System () , die einen angegebenen Befehl ausführen und das Ausführungsergebnis zurückgeben kann. Wenn Sie genauer bestimmen müssen, ob ein Befehl ausgeführt werden kann, und sein Ausführungsergebnis abrufen können, können Sie die Funktion is_exexecutable () kombinieren, um sie zu implementieren.
Die Funktion is_execable () wird verwendet, um zu überprüfen, ob die angegebene Datei ausführbar ist. Es gibt true zurück, wenn die Datei existiert und ausführbar ist, geben Sie ansonsten falsche zurück. Dies ist sehr nützlich, um festzustellen, ob eine Datei Ausführungsberechtigungen hat.
<span><span><span class="hljs-title function_ invoke__">is_executable</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>);
</span></span>$ Datei : Der Dateipfad zu überprüfen.
Rückgabewert: Rückgabe true , wenn die Datei existiert und ausführbar ist, ansonsten false zurückgeben.
Die Funktion System () wird verwendet, um den angegebenen Befehl auszuführen und das Ergebnis auszugeben. Wenn der Befehl erfolgreich ausgeführt wird, gibt er das Ausführungsergebnis des Befehls aus und gibt den Inhalt der letzten Zeile zurück.
<span><span><span class="hljs-title function_ invoke__">system</span></span><span>(</span><span><span class="hljs-variable">$command</span></span><span>, &</span><span><span class="hljs-variable">$return_var</span></span><span>);
</span></span>$ Befehl : Der Befehl, der ausgeführt wird.
$ return_var : Der Statuscode wurde nach der Ausführung des Befehls zurückgegeben. Normalerweise bedeutet 0 , dass die Befehlsausführung erfolgreich ist und nicht 0 bedeutet, dass die Befehlsausführung fehlgeschlagen ist.
Das Kombinieren von IS_Execable () und System () -Funktionen kann genau bestimmen, ob der Befehl ausgeführt werden kann, und das tatsächliche Ausführungsergebnis des Befehls abzurufen. Der Prozess ist normalerweise wie folgt:
Überprüfen Sie, ob der Befehl oder das Skript ausführbar sind : Verwenden Sie vor dem Aufrufen von System (), um den Befehl auszuführen, iS_Execable (), um festzustellen, ob der Befehl oder das Skript Ausführungsberechtigungen haben.
Führen Sie den Befehl aus und bestimmen Sie das Ausführungsergebnis : Wenn der Befehl ausführbar ist, verwenden Sie System () auszuführen und erhalten Sie den Befehlsausführungsstatus über $ return_var . Stellen Sie fest, ob der Befehl erfolgreich auf dem Statuscode ausgeführt wird.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$command</span></span><span> = </span><span><span class="hljs-string">'/path/to/your/script.sh'</span></span><span>; </span><span><span class="hljs-comment">// Angenommen, dies ist der Skriptpfad, der ausgeführt werden muss</span></span><span>
</span><span><span class="hljs-comment">// Schritt 1:Überprüfen Sie, ob der Befehl ausführbar ist</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_executable</span></span><span>(</span><span><span class="hljs-variable">$command</span></span><span>)) {
</span><span><span class="hljs-comment">// Schritt 2:Führen Sie den Befehl aus</span></span><span>
</span><span><span class="hljs-variable">$return_var</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>;
</span><span><span class="hljs-variable">$output</span></span><span> = </span><span><span class="hljs-title function_ invoke__">system</span></span><span>(</span><span><span class="hljs-variable">$command</span></span><span>, </span><span><span class="hljs-variable">$return_var</span></span><span>);
</span><span><span class="hljs-comment">// Bestimmen Sie das Ausführungsergebnis des Befehls basierend auf dem Ausführungsstatuscode</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$return_var</span></span><span> === </span><span><span class="hljs-number">0</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Die Befehlsausführung ist erfolgreich,Ausgangsergebnis:\n<span class="hljs-subst">$output</span></span></span><span>";
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Befehlsausführung fehlgeschlagen,Statuscode:<span class="hljs-subst">$return_var</span></span></span><span>";
}
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Der Befehl ist nicht ausführbar oder existiert nicht!"</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>Überprüfung der Dateiberechtigung : Bevor Sie Shell -Skripte oder Systembefehle ausführen, können Sie zunächst überprüfen, ob die Datei Ausführungsberechtigungen enthält, um Fehler mit unzureichenden Berechtigungen zu vermeiden.
Automatisiertes Bereitstellungsskript : Während des automatisierten Bereitstellungsvorgangs können Sie PHP -Skripte verwenden, um Shell -Befehle auszuführen. Bestimmen Sie jedoch vor der Ausführung, ob der Befehl gültig und ausführbar ist.
Sicherheitsprüfung : Stellen Sie bei der Ausführung externer Befehle sicher, dass der Befehl legal und sicher ist, um zu verhindern, dass böswillige Befehle ausgeführt werden.
Erläuterungen Ausgabe : Die Berechtigungen des aktuellen PHP -Prozesses können die Befehlsausführung beeinflussen, selbst wenn die Datei vorliegt und als ausführbar gekennzeichnet ist. Stellen Sie daher sicher, dass der PHP -Prozess eine ausreichende Erlaubnis hat, die relevanten Befehle auszuführen.
Befehlspfad : Wenn Sie System () anrufen, um Befehle auszuführen, verwenden Sie am besten den absoluten Pfad des Befehls, um die Befehlssuche aufgrund unterschiedlicher Umgebungsvariablen zu vermeiden.
Rückgabewertverarbeitung : Der über $ return_var erhaltene Statuscode kann nicht nur dazu beitragen, festzustellen, ob der Befehl erfolgreich ist, sondern auch für die Debugging und Fehlerverarbeitung weiter verwendet werden kann.
Durch die Kombination von IS_Executable () und System () können wir Systembefehle sicherer und kenter beurteilen und ausführen, wodurch Fehler durch Dateiberechtigungen oder Ausführungsfehler und Verbesserung der Stabilität und Wartbarkeit des Codes vermieden werden.
Verwandte Tags:
is_executable