PHP: testet den Aufruf exec() [Programm ausführen]
Autor: Ralf v.d.Mark
eingetragen: Montag, 17. August 2020 um 10:22 Uhr (34/2020 Kalenderwoche)
geändert: Freitag, 05. April 2024 um 13:52 Uhr (14/2024 Kalenderwoche)
Keywords: testet Aufruf exec Programm ausführen cons Konstanten
Kategorien: PHP,
Text:
Um die Funktion exec() zu testen, kann man die Datei "teste_EXEC.php" (siehe Quellcode) auführen.
Wenn erfolgreich, werden alle für PHP definierten Konstanten in eine Text-Datei geschrieben.
Der Aufruf für PHP (z.B.: php83) wird jetzt dynamisch erzeugt:
$phpAliasAufruf = 'php'.(int)substr(strreplace('.', '', PHPVERSION), 0, 2);
Quellcode:
<?php
/**
* Diese Datei testet die Funkion exec() und schreibt, wenn erfolgreich,
* alle für PHP definierten Konstanten in eine Text-Datei.
*
* PHP version 8
*
* @name teste_EXEC.php
* @author Ralf von der Mark, Ref. 223 (Entwicklung), BLE <Ralf.vonderMark@BLE.de>
* @copyright 2024, BLE
* @version 05.04.2024, GIT: No
*/
$phpAliasAufruf = 'php'.(int)substr(str_replace('.', '', PHP_VERSION), 0, 2);
//Zeitzone und mehr einstellen:
date_default_timezone_set('Europe/Berlin');
setlocale(LC_ALL, 'de_DE@euro');
define('AUFRUF_PHP', $phpAliasAufruf);//Aufruf für PHP (Standard: php)
define('VERZEICHNS_SPEICHERN', 'temp/');//"/temp/" muss existieren & beschreibbar sein
define('PFAD_ABSOLUT', $_SERVER['DOCUMENT_ROOT'] . '/');//htdocs-Verzeichnis des Angebotes
define('NAME_DIESER_DATEI', basename((string)$_SERVER['SCRIPT_FILENAME']));//Name der Datei selbst
define('PFAD_ZUM_SPEICHERN', PFAD_ABSOLUT . VERZEICHNS_SPEICHERN);
define('NAME_SPEICHERDATEI', 'allePhpKonstanten_' . date('Y-m-d_H-i') . '.txt');
define('LOGDATEI_GEWUENSCHT_BOOL', false);//Wenn true, wird die Ausgabe gespeichert!
//$argv[1] = PFAD_ZUM_SPEICHERN . NAME_SPEICHERDATEI;//IF()-Bereich testen "Datei schreiben"
if (!empty($argv[1])) {
/* Hier muss jetzt was gemacht werden und dann das Programm stoppen!
*
* HINWEIS: Der Pfad muss übergeben werden, da die Server-Variablen nicht
* zur Verfügung stehen. Man kann auch mehr Wert im $argv-Array
* übergeben, getrennt mit SPACE (Leertaste, chr(32)). */
//wird in die Log geschrieben, falls LOGDATEI_GEWUENSCHT_BOOL = true.
echo '[' . date('Y-m-d H:i:s') . '] Schreibe die Datei: "' . $argv[1] . '"' . PHP_EOL;
file_put_contents($argv[1],
'Enthaelt alle für PHP definierten Konstanten (Stand: ' .
date('d.m.Y \, H:i:s') . ' Uhr)' .
PHP_EOL . PHP_EOL .
print_r(get_defined_constants(true), true));
//wird in die Log geschrieben, falls LOGDATEI_GEWUENSCHT_BOOL = true.
echo '[' . date('Y-m-d H:i:s') . '] Die Datei: "' . $argv[1] . '" sollte geschrieben sein.' . PHP_EOL;
//...und jetzt das Programm stoppen!
exit();
}//ENDE: if ()
if (LOGDATEI_GEWUENSCHT_BOOL === true) {
//Hier wartet PHP auf das Ende des Programms und schreibt ERRORs in Txt-Datei
$wartenOderLogschreiben = '>> ' . PFAD_ZUM_SPEICHERN . NAME_DIESER_DATEI . '_log.txt';
} else {
//Wartet nicht auf Antwort der Seite! Job kann nicht mehr angehalten werden!
$wartenOderLogschreiben = '> /dev/null &';
}//ENDE: else ==> if (LOGDATEI_GEWUENSCHT_BOOL === true)
exec(AUFRUF_PHP .
' ' . $_SERVER['SCRIPT_FILENAME'] .
' ' . PFAD_ZUM_SPEICHERN . NAME_SPEICHERDATEI . //Inhalt von $argv[1]
' ' . $wartenOderLogschreiben);//Log oder nicht
echo '<h1>Die Datei ' . NAME_DIESER_DATEI . ' hat den Aufruf exce() gestartet.</h1>
<a href="/' . VERZEICHNS_SPEICHERN . NAME_SPEICHERDATEI . '">Wenn es funktioniert, finden Sie hier das Ergebnis.</a>';
exit();