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