Bekijk Volledige Versie : vreemd (dir verwijderen die ik zelf gemaakt heb, mag niet) PHP
Matthijs de Z
23/12/04, 14:45
Hallo,
In een script wil ik een directory op een server weghalen. Deze directory is
aangemaakt door een PHP script op een andere machine (machine1). Nu wil ik
vanaf machine1 de directory die is aangemaakt op machine2 verwijderen met:
rmdir("T:\\dailybackups\\MS-DATA20041213");
Maar dat gaat niet.
Ik krijg dan deze foutmelding:
Warning: rmdir(T:\dailybackups\MS-DATA20041213): No such file or directory
in C:\Apache\Apache2\htdocs\test.php on line 2
Dus ik dacht ik gooi er een chdir() tegenaan met
chdir("T:\\dailybackups") ;
en dan pas
rmdir("T:\\dailybackups\\MS-DATA20041213");
Maar dan krijg ik:
Warning: chdir(): No such file or directory (errno 2) in
C:\Apache\Apache2\htdocs\test.php on line 2
Warning: rmdir(T:\dailybackups\MS-DATA20041213): No such file or directory
in C:\Apache\Apache2\htdocs\test.php on line 3
als ik lokaal naar een andere dir ga, bijvoorbeeld C:\temp en daar wat
directory's in zet, krijg ik dezelfde foutmelding. Dus ik heb niet het
vermoeden dat het aan rechten op de server ligt.
Iemand een idee waar ik kan gaan zoeken?
Groeten,
Matthijs
Niels Basjes
23/12/04, 15:55
On Thu, 23 Dec 2004 14:41:39 +0100, the lifeform known as "Matthijs de Z"
<haalallesvoorhetstreepjeplushetstreepjezelfweg-mldz@hotmail.com> wrote:
>In een script wil ik een directory op een server weghalen. Deze directory is
>aangemaakt door een PHP script op een andere machine (machine1). Nu wil ik
>vanaf machine1 de directory die is aangemaakt op machine2 verwijderen met:
>
>rmdir("T:\\dailybackups\\MS-DATA20041213");
>
>Maar dat gaat niet.
>
>Ik krijg dan deze foutmelding:
>Warning: rmdir(T:\dailybackups\MS-DATA20041213): No such file or directory
>in C:\Apache\Apache2\htdocs\test.php on line 2
Nee, dat klopt.
Wat je wil weghalen is niet bereikbaar voor die server.
Je zegt zelf dat het op een andere server staat.
>Iemand een idee waar ik kan gaan zoeken?
Controleer
- of die drive letter er wel is.
- of je die drive letter wel mag openen.
- of die directory er wel is.
- of je die directory wel mag openen.
etc.
--
Niels.
Niels Basjes - http://niels.basjes.nl/ - VCV 20000302
mailto:`echo 'Niels Basjes'|awk '{print$1"@"$2".nl"}'`
Matthijs de Z
23/12/04, 17:45
> >In een script wil ik een directory op een server weghalen. Deze directory
is
> >aangemaakt door een PHP script op een andere machine (machine1). Nu wil
ik
> >vanaf machine1 de directory die is aangemaakt op machine2 verwijderen
met:
> >
> >rmdir("T:\\dailybackups\\MS-DATA20041213");
> >
> >Maar dat gaat niet.
> >Ik krijg dan deze foutmelding:
> >Warning: rmdir(T:\dailybackups\MS-DATA20041213): No such file or
directory
> >in C:\Apache\Apache2\htdocs\test.php on line 2
> Nee, dat klopt.
> Wat je wil weghalen is niet bereikbaar voor die server.
> Je zegt zelf dat het op een andere server staat.
>
> >Iemand een idee waar ik kan gaan zoeken?
> Controleer
> - of die drive letter er wel is.
Bestaat, het script heeft er zelf de directory op gemaakt (dat gaat wel).
Gekke is dus dat het notabene ook op de lokale C schijf niet gaat.
> - of je die drive letter wel mag openen.
Ja, mag. Het script schrijft er ook backup bestanden naar
> - of die directory er wel is.
Is er ook
> - of je die directory wel mag openen.
Ik mag ook een directory maken en daar files in zetten. Maar ik als ik
dezelfde directory wil verwijderen, krijg ik die problemen.
> etc.
zeg dat wel...
Misschien dat het helpt, de machines draaien op windows XP
Mazzel,
Matthijs
Ronald Klip
23/12/04, 18:45
Matthijs de Z schreef:
>
> Ik mag ook een directory maken en daar files in zetten. Maar ik als ik
> dezelfde directory wil verwijderen, krijg ik die problemen.
Is die directory wel leeg? Zie hit #1 op
http://www.google.com/search?q=windows+rmdir
--
groet, Ronald
Matthijs de Z
23/12/04, 19:15
> > Ik mag ook een directory maken en daar files in zetten. Maar ik als ik
> > dezelfde directory wil verwijderen, krijg ik die problemen.
>
> Is die directory wel leeg? Zie hit #1 op
> http://www.google.com/search?q=windows+rmdir
Ik heb dit inderdaad getest door een lege directory te maken. Ook toen
werkte het niet. Wanneer ik directory's binnen de www structuur van apache
wilde weghalen, lukte het zowel met directory's met inhoud, als zonder.
Ik vind het ook zo vreemd dat ik ze wel kan maken buiten de www sctructuur
(zelf op een netwerkschijf), maar niet kan deleten.
Groeten,
Matthijs
>
> --
> groet, Ronald
Niels Basjes
23/12/04, 22:25
On Thu, 23 Dec 2004 17:40:59 +0100, the lifeform known as "Matthijs de Z"
<haalallesvoorhetstreepjeplushetstreepjezelfweg-mldz@hotmail.com> wrote:
>>>In een script wil ik een directory op een server weghalen.
....
>> >rmdir("T:\\dailybackups\\MS-DATA20041213");
>> >
>> >Maar dat gaat niet.
>Bestaat, het script heeft er zelf de directory op gemaakt (dat gaat wel).
>Gekke is dus dat het notabene ook op de lokale C schijf niet gaat.
Onder UNIX zou ik nu roepen: SAFE MODE staat aan.
Maar ik weet niet of dat ook effect heeft op een Windows systeem.
--
Niels.
Niels Basjes - http://niels.basjes.nl/ - VCV 20000302
mailto:`echo 'Niels Basjes'|awk '{print$1"@"$2".nl"}'`
Matthijs de Z
23/12/04, 23:15
> >> >rmdir("T:\\dailybackups\\MS-DATA20041213");
> >> >
> >> >Maar dat gaat niet.
>
> >Bestaat, het script heeft er zelf de directory op gemaakt (dat gaat wel).
> >Gekke is dus dat het notabene ook op de lokale C schijf niet gaat.
>
> Onder UNIX zou ik nu roepen: SAFE MODE staat aan.
> Maar ik weet niet of dat ook effect heeft op een Windows systeem.
Ik zal het morgen nog eens checken.
groeten,
Matthijs
Daniel Tryba
24/12/04, 10:25
Matthijs de Z <haalallesvoorhetstreepjeplushetstreepjezelfweg-mldz@hotmail.com> wrote:
> Ik vind het ook zo vreemd dat ik ze wel kan maken buiten de www sctructuur
> (zelf op een netwerkschijf), maar niet kan deleten.
Rechten (ACLs)! Zoek de verschillen tussen de "www" structuur en alle andere
files/directories die je niet kan verwijderen.
Matthijs de Z
24/12/04, 10:35
> Onder UNIX zou ik nu roepen: SAFE MODE staat aan.
> Maar ik weet niet of dat ook effect heeft op een Windows systeem.
Net even in de PHP.ini gekeken en daar stond de Safe_mod uit
; Safe Mode
;
safe_mode = Off
Ik heb het script ook via de CLI geprobeerd te draaien, maar ook daar geen
goed resultaat.
Groeten,
Matthijs
Matthijs de Z
25/12/04, 14:05
> > Ik vind het ook zo vreemd dat ik ze wel kan maken buiten de www
sctructuur
> > (zelf op een netwerkschijf), maar niet kan deleten.
> Rechten (ACLs)! Zoek de verschillen tussen de "www" structuur en alle
andere
> files/directories die je niet kan verwijderen.
Naar mijn beste weten heb ik overal rechten om te schrijven / dingen te
verwijderen. Met de hand lukt het ook. Ik vind het ook vreemd dat ik wel
dir's kan maken,maar dezelfde niet kan verwijderen. Net heb ik het script
nog even getest op mijn eigen computer, zonder netwerk, maar gewoon op de C
schijf en daar lukt het ook niet. En dat is gewoon een simpele win98 SE kast
zonder enige beveiliging cq rechten.
Dit is het script. Misschien dat iemand het zien (de te verwijderen dir's
staan in c:\test en zijn voor de test leeg)
C:\test\test20041215
C:\test\test20041216
C:\test\test20041217
C:\test\test20041218
C:\test\test20041219
C:\test\test20041220
C:\test\test20041221
C:\test\test20041222
C:\test\test20041223
C:\test\test20041224
groeten,
Matthijs
<?php
$directory ="C:\\test";
$dir1="test";
$dir2="abcdefg";
//1 dag = 86400
$aantaldagen = 2;
$dts = $aantaldagen * 86400;
$klaar = 0;
if ($handle = opendir($directory))
{
while (false !== ($file = readdir($handle)))
{
if(is_dir($file) && ($file!=='..' && $file!=='.'))
{
$naamlengte = strlen($file);
$dirdatum = substr($file,-8);
if(is_numeric($dirdatum))
{
$hoofdnaam = substr($file,0,$naamlengte-8);
if($hoofdnaam==$dir1 || $hoofdnaam==$dir2)
{
$jaar = substr($dirdatum,0,4);
$maand = substr($dirdatum,4,2);
$dag = substr($dirdatum,6,2);
$vandaagjaar = date(Y);
$vandaagmaand = date(m);
$vandaagdag = date(d);
$jaarverschil = $vandaagjaar - $jaar;
$maandverschil = $vandaagmaand - $maand;
$dagverschil = $vandaagdag - $dag;
$xdagengeleden = mktime (0, 0, 0, date("m")-$maandverschil,
date("d")-$dagverschil, date("Y")-$jaarverschil);
$nu = mktime(0,0,0, date("m"),date("d"), date("Y"));
$verschil = $nu - $xdagengeleden;
if($verschil <= $dts)
{
rmdir($file);
}
}
}
}
}
closedir($handle);
$klaar = 1;
}
if($klaar == 1)
{
echo"klaar";
}
else
{
echo"mislukt";
}
?>
Ronald Klip
25/12/04, 14:35
Matthijs de Z schreef:
> > > Ik vind het ook zo vreemd dat ik ze wel kan maken buiten de www
> sctructuur
> > > (zelf op een netwerkschijf), maar niet kan deleten.
>
> if ($handle = opendir($directory))
> {
> while (false !== ($file = readdir($handle)))
> {
> if(is_dir($file) && ($file!=='..' && $file!=='.'))
is_dir($file) zal nooit true zijn, aangezien het script niet in
$directory draait. Gebruik het volledige pad.
> rmdir($file);
Idem.
--
groet, Ronald
Matthijs de Z
25/12/04, 17:45
> > if ($handle = opendir($directory))
> > {
> > while (false !== ($file = readdir($handle)))
> > {
> > if(is_dir($file) && ($file!=='..' && $file!=='.'))
>
> is_dir($file) zal nooit true zijn, aangezien het script niet in
> $directory draait. Gebruik het volledige pad.
>
> > rmdir($file);
>
> Idem.
Je bent geniaal ;-)
Bedankt en de groeten,
Matthijs