Een zeer eenvoudige oplossing in veel situaties, voor een tamelijk ernstig probleem. In het scenario waarin we een website moeten verhuizen, waarvan de bestanden enkele duizenden bedragen, en de webhostingprovider ons geen back-up systeem met archivering of een andere soortgelijke methode waarmee we dit kunnen doen, FTP-overdracht het is een oplossing die ons veel tijd zou kosten.
Een PHP-script dat is geüpload naar de server die de website host, zou ons hierbij kunnen helpen archivering in .TAR-formaat van alle bestanden in een map.
Hoe archiveren we bestanden en mappen op een webserver, met behulp van een PHP-script?
We kopiëren onderstaand script en plaatsen het in een .php-bestand op de server. Voorbeeld: archive.php zou het onderstaande script moeten bevatten:
<?php
try {
//make sure the script has enough time to run (300 seconds = 5 minutes)
ini_set('max_execution_time', '300');
ini_set('set_time_limit', '0');
$target = isset($_GET["targetname"]) ? $_GET["targetname"] : 'archive.tar'; //default to archive.tar
$dir = isset($_GET["dir"]) ? $_GET["dir"] : './.'; //defaults to all in current dir
//setup phar
$phar = new PharData($target);
$phar->buildFromDirectory(dirname(__FILE__) . '/'.$dir);
echo 'Compressing all files done, check your server for the file ' .$target;
} catch (Exception $e) {
// handle errors
echo 'An error has occured, details:';
echo $e->getMessage();
}
?>
Voorzichtig! Het script moet worden geüpload naar de map waarin we de map en de bestanden die deze bevat willen archiveren. Als we bijvoorbeeld alle inhoud van de map wp-content van WordPress willen archiveren, wordt het bestand dat we arhiva.php noemen, geüpload naar /wp-content/.
Het archief wordt gemaakt door het archive.php-bestand in de browser te openen. url: http:..name_website.tld/wp-content/arhiva.php, en aan het einde van de bewerking zal het bestand archive.tar aanwezig zijn op de server.
Als u een groot aantal bestanden heeft, wijzigt u de waarde van “time -out” van de uitvoeringstijd. Je kunt dit doen vanuit php.ini of vanuit .htaccess.