Hoi,

Ik (=php-noob) probeer een script te maken waarmee is door middel van een webinterface een aantal processen op een linux server kan starten/stoppen. Nu leek mij de eerste stap om te indexeren welke directories (==processen) er zijn. Na wat knip en plak werk kwam ik op zoiets:

<?php
$dir = "/home/services/xxx/";
$map_aantal = 0;
$namen = '';

if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if ($file != "." && $file != "..") {
$namen['map'][$map_aantal] = $file;
$map_aantal++;
}
}
closedir($dh);
sort($namen['map']);
echo "{$namen['map']}";
}
}
?>

Geeft echter totaal geen output, wat doe ik verkeerd? Als iemand trouwens interrese heeft om heel dit script voor mij te maken, stuur me een emailtje op [email protected], vergoeding uiteraard mogelijk, hetzij in de vorm van euro's of een vorm van (web)hosting.
Niemand?
Ondertussen iets verder, iemand met redelijk wat PHP ervaring die ik toe zou kunnen op MSN voor een paar vraagjes?
Heb je je eens verdiept in de jail waarin php draaid, eg... de rechten die php heeft om iets te kunnen doen.
PHP/Apache heeft alle rechten om te komen waar het zou moeten komen, ik krijg ook gewoon output als ik het script ombouw om inhoud van de directory te echo'en, alleen daar heb ik nog niet echt veel aan.
zoek eerst je echos maar es uit . en je volgorde van je script, dr klopt niet veel van
echo "{$namen['map']}";
Heb je een speciale reden om dit binnen de quotes te houden?
Nope, eigenlijk niet, ik probeer ook maar het een en ander.

Zo staat het er nu voor: http://pb.ufear.net/index.php?show=6

Krijg nu de laatste directory die er is terug als output, bedoeling lijkt me dat ik ze allemaal krijg.
$namen['map'] verwijst naar een array, dus zal het je niet lukken die te echo'en. Een print_r geeft meer resultaat.
Ook even naar je nieuwe script gekeken:

$namen['$map_aantal'] = $file;

Hier wordt $map_aantal gebruikt als letterlijke string, en niet als variabele, omdat er enkele quotes omheen staan. Haal de enkele quotes weg (of vervang ze voor dubbele) en het werkt een stuk beter.

Edit: Overigens hoef je niet eens met $map_aantal te werken. Als je het volgende doet:

$namen[] = $file;

bereik je hetzelfde resultaat.
$namen[ $map_aantal ] = $file;
Dus want er dubbele quotes omzetten is onzin en niet eens nuttig.

Reageren