Benutzer-Werkzeuge

Webseiten-Werkzeuge


programmieren:php:programme:entpacken

Dateien entpacken


Diese Script entpackt eine Datei mit Unterverzeichnissen.


Problem: man hat große Programmpakete und möchte diese nicht local entpacken und dann per FTP hochladen, weil das viel zu lange dauert.

Alternative: man kopiert die gepackte Datei auf den Webspace und zusätzlich dieses Script. Dieses entpackt dann das Script auf dem Webspace was wesentlich schneller geht.

Anwendung:
Dazu einfach die Datei in das gewünschte Verzeichnis kopieren und die erste Zeile ändern.
Dann das Script starten.

ACHTUNG: Das Script benötigt die Berechtigung von zum Ausführen der EXEC Befehle. Dazu muss diese in der php.ini entsprechend freigegeben sein.

entpack.php
<?PHP
// Entpack Kommandos: https://www.thomas-krenn.com/de/wiki/Archive_unter_Linux_(tar,_gz,_bz2,_zip)#zip
echo "<h1>Datei entpacken</h1>";
 
if (!is_callable('exec')) {
	die( "EXEC muss in der PHP.INI zugelassen sein." );
}
 
if (!isset($_GET["datei"])) {
 
	echo "Bitte Datei zum enpacken anklicken:<br>";
	// Der Punkt steht für das Verzeichnis, in der auch dieses
	// PHP-Programm gespeichert ist
	$read_verz = ".";
	$verzeichnis = openDir($read_verz);
	// Verzeichnis lesen
	while ($file = readDir($verzeichnis)) {
		// Datei Extension auslesen
		$ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
		if ($file != "." && $file != ".." ) {
			if ( $ext == "zip" || $ext == "tar" || $ext == "gz" || $ext == "gzip" || $ext == "bz2" || $ext == "bzip2") {
				// Link erstellen
				echo "<a href='". basename(__FILE__) ."?datei=$file'>$file</a><br>\n";
			}
		}
	}
	// Verzeichnis schließen
	closeDir($verzeichnis);
 
} else {
 
	$dateiname = $_GET["datei"];
	echo "<b>".$dateiname."</b> wird entpackt:<br>";
 
	$ext = strtolower(pathinfo($dateiname, PATHINFO_EXTENSION)); 
 
	if ($ext === "zip") {
	//	echo "ZIP Datei <br>";
		$shellBefehl = "unzip $dateiName";	
 
	} elseif ($ext === "tar") {
	//	echo "tar Datei <br>";
		$shellBefehl = "tar cfv $dateiName";
 
	} elseif ($ext === "gz" || $ext === "gzip" ) {
	//	echo "gz Datei <br>";
		$shellBefehl = "tar xfvz $dateiName";
 
	} elseif ($ext === "bz2" || $ext === "bzip2" ) {
	//	echo "gzip Datei <br>";
		$shellBefehl = "tar xfvj $dateiName";
	}
 
	$shellBefehl = escapeshellcmd($shellBefehl);
	exec($shellBefehl,$nu);
	echo "<pre>";
	print_r($nu);
	echo "</pre>";
	echo "Fertig";
 
}
 
function isEnabled($func) {
       return is_callable($func) && false === stripos(ini_get('disable_functions'), $func);
}
?>

Ausgabe:

Array
(
  [0] => dokuwiki/.htaccess.dist
  [1] => dokuwiki/COPYING
  [2] => dokuwiki/README
  [3] => dokuwiki/VERSION
  [4] => dokuwiki/bin/.htaccess
  [5] => dokuwiki/bin/dwpage.php
  [6] => dokuwiki/bin/gittool.php
  [7] => dokuwiki/bin/indexer.php
  [8] => dokuwiki/bin/plugin.php
  [9] => dokuwiki/bin/render.php
  [10] => dokuwiki/bin/striplangs.php
  [11] => dokuwiki/bin/wantedpages.php
  [12] => dokuwiki/conf/.htaccess
  [13] => dokuwiki/conf/acl.auth.php.dist
  [14] => dokuwiki/conf/acronyms.conf
  [15] => dokuwiki/conf/dokuwiki.php
  [16] => dokuwiki/conf/entities.conf
  [17] => dokuwiki/conf/interwiki.conf
  [18] => dokuwiki/conf/license.php
  [19] => dokuwiki/conf/local.php.dist
Diese Website verwendet nur für den Betrieb notwendige Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer sowie den Datenschutzbestimmungen zu. Wenn Sie nicht einverstanden sind, verlassen Sie die Website. Weitere Information
programmieren:php:programme (321 views) · Zuletzt geändert: 01/04/2021 14:16 von conny

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki