Scriptinstaller

Status
Niet open voor verdere reacties.

5blabla5

Gebruiker
Lid geworden
27 apr 2009
Berichten
485
Sinds vandaag ben ik bezig met een scriptinstaller. Allemaal leuk en aardig op Windows, aangezien die geen bestandsrechten kent. Helaas pakte dit script wat minder goed uit op Linux (getest @ woelmuis.nl). Weet iemand hoe dit komt, en nog belangrijker, hoe ik dit kan oplossen?

PHP code:

PHP:
<?php

###############################################################################
##                        Script Installer v1.0 beta                         ##
###############################################################################

###############################################################################
## LET OP! Dit script is tot nu toe alleen getest op Windows! Mogelijk werkt ##
## Linux niet.                                                               ##
###############################################################################

###############################################################################
## LET OP! Dit is de beta versie van Script Installer V1.0! Mogelijk werken  ##
## sommige dingen niet, of zijn bepaalde dingen niet netjes gescript!        ##
###############################################################################


$data = '
[|SIv1|]map[|SIv1|]map[|SIv1|]fakedata[|SIv1|][|SIv1|]777[|SIv1|]
[|SIv1|]map[|SIv1|]name[|SIv1|]fakedata[|SIv1|]map/[|SIv1|]777[|SIv1|]
[|SIv1|]file[|SIv1|]name.php[|SIv1|]data[|SIv1|]map/name/[|SIv1|]777[|SIv1|]
';


$error['missingpart']  =  FALSE;
$error['missingdata']  =  FALSE;
$error['chmodfailed']  =  FALSE;
$error['createfailed'] =  FALSE;


if(isset($data) && !empty($data)) {

	$data     =  trim($data);
	$datapart =  explode("\n", $data);

} else {

	$error['missingdata'] = TRUE;

}

unset($data);

$i = 0;
foreach($datapart as $part) {

	list($empty, $data[$i]['type'], $data[$i]['name'], $data[$i]['data'], $data[$i]['map'], $data[$i]['chmod'], $empty) = explode('[|SIv1|]', $part);

	$data[$i]['type']  =  trim($data[$i]['type']);
	$data[$i]['name']  =  trim($data[$i]['name']);
	$data[$i]['data']  =  trim($data[$i]['data']);
	$data[$i]['map']   =  trim($data[$i]['map']);
	$data[$i]['chmod'] =  trim($data[$i]['chmod']);


	$i++;

}

$countdata = count($datapart);


// Check data

$i = 0;
while($i < $countdata) {

	if(empty($data[$i]['type']) || empty($data[$i]['name']) || empty($data[$i]['chmod'])) {


		$error['missingpart'] = TRUE;

	}

	$i++;
}


// Create mapstructure

$i = 0;
while($i < $countdata) {

	if($data[$i]['type'] == 'map') {

		if(!mkdir($data[$i]['map'].$data[$i]['name'], 0777)) {

			$error['createfailed'] = TRUE;
			break;

		}

	}

	$i++;
}


// Create files

$i = 0;
while($i < $countdata) {

	if($data[$i]['type'] == 'file') {

		if(!file_put_contents($data[$i]['map'].$data[$i]['name'], $data[$i]['data'])) {

			$error['createfailed'] = TRUE;
			break;

		} else {

			if(!chmod($data[$i]['map'].'/'.$data[$i]['name'], $data[$i]['chmod'])) {

				$error['chmodfailed'] = TRUE;
				break;
			}
		}

	}

	$i++;
}


// chmod mapstructure

$i = 0;
while($i < $countdata) {


	if($data[$i]['type'] == 'map') {

		if(!chmod($data[$i]['map'].$data[$i]['name'], $data[$i]['chmod'])) {

			$error['chmodfailed'] = TRUE;
			break;

		}

	}

	$i++;
}

if($error['missingpart'] || $error['missingdata'] || $error['chmodfailed'] || $error['createfailed']) {

	echo 'Het volgende ging mis:<br />';
	if($error['missingpart']){
		echo 'Het installerbestand is beschadigt (bestand/map structuur klopt niet)!<br />';
	}
	if($error['missingdata']){
		echo 'Het installerbestand is beschadigt (bestand/map structuur ontbreekt)!<br />';
	}
	if($error['chmodfailed']){
		echo 'Het installerscript kon geen rechten toewijzen!<br />';
	}
	if($error['createfailed']){
		echo 'Het installerbestand kon een bestand of map niet aanmaken!<br />';
	}

} else {

	echo 'Het script is succesvol geinstalleerd door het installerbestand!';

}

?>

Verwachte bestandsstructuur: (getallen staan voor rechten)
Code:
- map (map + 0777)
- map/name (map + 0777)
- map/name/name.php (bestand + 0777)

inhoud map/name/name.php:
Code:
data

Bij woelmuis krijg ik alleen de map "map", die behoorlijk vreemde rechten heeft, waardoor woelmuis zelf een beetje crashed....

Alvast bedankt voor de oplossing (Jaja, ik hoop wel heel erg op hulp :o)

PS: Tips, suggesties, foutjes, je mag het ook posten :D
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan