Wie weet de oplossing/oorzaak van mijn probleem.

Door onverklaarbare oorzaak kan ik met file commando’s geen bestand meer naar een directory schrijven.
Onderstaande werkt niet op mijn macbookpro. Echter wel op een andere computer (mac).

$filename = "../backup_my2/teller.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);

Met de finder kan ik wel naar de betreffende dir schrijven maar vanuit php niet terwijl dit eerst gewoon werkte.
De rechten osx staan op read/write.

Permissions geeft: drwxr-xr-x
Ik heb daar echter nauwelijk kennis van. Kan iemand mij op weg helpen?

Vast bedankt,
Peter
Wie is de owner van die map? Als welke user draait PHP?

Kunt u iets met onderstaande informatie.

// File name and username to use
$file_name= "bestand.dat";
$path = "../blog/" . $file_name ;
$user_name = "root";

// Set the user
chown($path, $user_name);

// Check the result
$stat = stat($path);
print_r(posix_getpwuid($stat['uid']));


Warning: chown(): Operation not permitted in /Users/MacbookPeter/web/sites/pvk/backup1/owner.php on line 17
Array ( [name] => MacbookPeter [passwd] => ******** [uid] => 501 [gid] => 20 [gecos] => Peter van Kroonenburg [dir] => /Users/MacbookPeter [shell] => /bin/bash )
Tot zover wel, ik weet nu wie de eigenaar is van de map.
Kun je ook een echo getmyuid() doen?
Dus de rechten zijn gewoon zoals ze moeten zijn voor zover ik kan zien.
Wat is de exacte melding als je probeert te schrijven?
<?PHP
// ik heb een folder test aangemaakt met de volgende bestanden

// mag_weg.txt met de inhoud -> Dit mag weg
// test.txt met de inhoud -> dit is het test.txt bestand
// read_write.php -> dit bestand

// ik kan deze bestanden in Dreamweaver zien en bewerken zonder problemen

// Previeuw in safari/chrome/firefox
//echo readfile("test.txt");
// Previeuw in safari/chrome/firefox
// geeft een wit scherm

//$file = fopen("bestand1.txt","w");
//echo fwrite($file,"Hello World. Testing!");
//fclose($file);
// Previeuw in safari/chrome/firefox
// geeft het getal 21

//$file = fopen("mag_weg.txt","w");
//echo fwrite($file,"Hello World. Testing!");
//fclose($file);
// Previeuw in safari/chrome/firefox
// geeft het ook het getal 21 (????????
// originele tekst blijf staan


//unlink('mag_weg.txt');
// blank scherm bestand blijft staan

//unlink('test.txt');
// blank scherm bestand blijft staan

// op een andere computer in met dezelfde website, structuur werkt het wel.
//
?>


Op een Mac zijn 2 locaties om webpaginas te hosten.

In : /library/webserver/documents/

ook wel root genoemd, en in de Sites map in de Thuismap van de gebruiker.

Padnaam is dan : /User/gebruikersnaam/Sites/

Beide lokaties zijn te bereiken in de browser met respectievelijk :

http://localhost

en

http://localhost/~gebruikersnaam

Om veiligheidsredenen, die je zelf kan bedenken, kan je niet buiten die mappen schrijven. Mogelijk wel lezen, maar ga daar niet vanuit. De Chinese hackers zullen je dankbaar zijn.

Natuurlijk kan het met allerlei kunstgrepen.

Een daarvan is met Symbolic Links.

Je maak dan in de root of Sites map een symbolic link aan naar een willekeurige map op je harde schijf.

Vanuit de webserver gezien lijkt het dan een map/folder/directory.

Uiteraard moeten de permissies goed zijn.

Opmerking : een symbolic link lijkt op een Mac alias, maar is het niet.

Een symlink maak je aan in de Terminal.app.

Vervolgens heul veul oefenen.
>> //unlink('mag_weg.txt');
>> // blank scherm bestand blijft staan

Geef eens het GEHELE pad op in plaats van alleen een bestandsnaam, dus:

unlink('/het/complete/pad/naar/mag_weg.txt');
Het hele pad.
/Users/MacbookPeter/web/sites/ONE/pvk/test/mag_weg.txt

Apache;
http://localhost:8888/pvk/
ROOT:-> MacbookPeter/web/sites

Het blijf natuurlijk toch wel heel vreemd dat op mijn macpro die hetzelfde is ingericht als mijn macbook het wel werkt?
Effe reageren op je post van 9:45

21 is de handle van het bestand dat wordt geopend.

Doe het zo:

$file = fopen("mag_weg.txt","w");
fwrite($file,"Hello World. Testing!");
fclose($file);
$file = fopen("mag_weg.txt","r");
while(! feof($file))
  {
  echo fgets($file). "<br />";
  }
fclose($file);


Het is een goed idee om niet alles klakkeloos over te nemen :

http://www.w3schools.com/php/func_filesystem_fwrite.asp

Reageren