zip uitpakken met php

Status
Niet open voor verdere reacties.

Brugse zot

Gebruiker
Lid geworden
29 feb 2008
Berichten
48
Met het volgende script zou het mogelijk moeten zijn .zip bestanden
op de server zelf uit te pakken.

PHP:
<?php
function file_extension($filename)
{
return end(explode(".", $filename));
}
function curPageURL() {
 $pageURL = 'http';
 if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
 $pageURL .= "://";
 if ($_SERVER["SERVER_PORT"] != "80") {
  $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
 } else {
  $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
 }
 return $pageURL;
}

$file= isset($_REQUEST['file']) ? $_REQUEST['file'] : ''; 
if($file!=''){
if(file_extension($file)=='zip'){
exec('unzip '.$file ,$ret);}
elseif(file_extension($file)=='gz'){
exec('tar -xzf '.$file ,$ret);

}
}

 if ($handle = opendir('.')) {
 
   while (false !== ($file = readdir($handle)))
      {
          if ($file != "." && $file != "..")
	  {
	       
          	$thelist .= '<li>';
			if(file_extension($file)=='gz'||file_extension($file)=='zip')$thelist .= '<a href="'.curPageURL().'?file='.$file.'">';
			$thelist .= $file;
			if(file_extension($file)=='gz'||file_extension($file)=='zip')$thelist .= '</a>';
			$thelist .= '</li>';
          }
       }
  closedir($handle);
  }

echo "<P> Lijst van Geinstaleerde thema's:</p><ul>";
echo $thelist;
echo "</ul>";
?>

Hij geeft heel netjes een lijst met alle thema's en de zipjes zijn aan een link gekoppeld
maar bij het drukken op de link gebeurd er helaas niks.
 
Krijg je ook geen error?

Zet error reporting eens aan; dan zie je vaak al veel meer.

PHP:
error_reporting ( E_ALL );
 
Helaas geen Error

omdat de rest van het script wel werkt ??
hij maakt een lijst met bestaande thema's de zipjes zijn netjes een link
maar bij het klikken van de link voegt hij enkel ?file=fibreglass.zip tot aan de link in de browser.
 
Dan denk ik dat je even moet gaan debuggen aan het bovenste stuk...

Probeer dit eens; kijk waar hij stopt met doen wat je verwachtte ;)

Als ie inderdaad uit komt bij exec(), dan staat waarschijnlijk safe mode aan, of je hebt geen rechten ervoor...

PHP:
echo  ( $_REQUEST['file'] ) . '<br />';
$file= isset($_REQUEST['file']) ? $_REQUEST['file'] : '';
echo  ( $file ) . '<br />';
if($file!=''){
	if(file_extension($file)=='zip'){
                echo  ( 'Unzipping!' ) . '<br />';
		exec('unzip '.$file ,$ret);
	}
	elseif(file_extension($file)=='gz'){
                echo  ( 'Untarring!' ) . '<br />';
		exec('tar -xzf '.$file ,$ret);

	}
        else {
           echo ( 'File extension: ' . file_extension($file) . ' not recognized :( <br />' );
        }
}
 
Ik krijg dan deze melding:

fibreglass.zip
fibreglass.zip
Unzipping!

maar er gebeurd niks mee verder
 
Hmmm... host je dit op je eigen machine, of huur je ruimte bij een provider?

Ik denk dat de veilige modus van PHP aanstaat, dan kun je met exec() niet zo veel, of dat je simpelweg geen rechten hebt of de benodigde programma's niet geinstalleerd...

Je zou ook eens een print_r () over de return array van exec() heen kunnen halen om te kijken wat er allemaal uitgevoerd wordt, misschien dat dat helpt?
 
ik huur webspace.

ik zoek een mogelijkheid om users zelf wp-thema's te laten uploaden (gezipt)
aangezien dit niet mogelijk is met FTP dacht ik dus aan PHP.

maar het ziet er dus naar uit dat ook dit niet mogelijk is :(

misschien toch maar eens kijken naar een andere host
 
Ik denk niet dat er veel hosts zijn die interesse hebben om jou rechten te geven om programma's te runnen op hun servers ;)
Daarmee kun je heel makkelijk heel veel stuk maken.

Als je echt wil dat mensen dingen kunnen unzippen, dan kun je misschien beter nog kijken of je een eigen server kunt huren, anders vrees ik dat het er niet in gaat zitten; het is gewoon een beetje te riskant.
 
een eigen server krijg ik niet online. ik heb geen vast ip adres
dus dat valt al af. en is ook redelijk kostbaar voor een familie site :rolleyes:

ik zal dan zelf regelmatig thema''s moeten toevoegen
of een formulier maak waar ze thema's kunnen uploaden dat ik ze unzip :thumb:

toch bedankt voor je hulp :P

groetjes
 
Het schijnt dat je met combell wel een eigen (virtuele) server kan krijgen, met alle rechten. Dat heb ik maar van horen zeggen, mja
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan