probleem met file wegschrijven van een bestand

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Peter van Kroonenburg

Peter van Kroonenburg

06/10/2016 22:35:08
Quote Anchor link
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
 
PHP hulp

PHP hulp

27/04/2024 05:17:42
 
Ben van Velzen

Ben van Velzen

06/10/2016 22:50:45
Quote Anchor link
Wie is de owner van die map? Als welke user draait PHP?
 
Peter van Kroonenburg

Peter van Kroonenburg

06/10/2016 23:11:43
Quote Anchor link
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 )
 
Ben van Velzen

Ben van Velzen

06/10/2016 23:14:05
Quote Anchor link
Tot zover wel, ik weet nu wie de eigenaar is van de map.
Kun je ook een echo getmyuid() doen?
 
Peter van Kroonenburg

Peter van Kroonenburg

06/10/2016 23:39:32
Quote Anchor link
Natuurlijk:getmyuid:501
 
Ben van Velzen

Ben van Velzen

07/10/2016 01:01:43
Quote Anchor link
Dus de rechten zijn gewoon zoals ze moeten zijn voor zover ik kan zien.
Wat is de exacte melding als je probeert te schrijven?
 
Peter van Kroonenburg

Peter van Kroonenburg

07/10/2016 09:45:56
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?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.
//

?>
 
Adoptive Solution

Adoptive Solution

07/10/2016 12:45:22
Quote Anchor link
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.
 
Ozzie PHP

Ozzie PHP

07/10/2016 15:32:38
Quote Anchor link
>> //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');
 
Peter van Kroonenburg

Peter van Kroonenburg

07/10/2016 17:53:33
Quote Anchor link
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?
 
Adoptive Solution

Adoptive Solution

07/10/2016 18:47:47
Quote Anchor link
Effe reageren op je post van 9:45

21 is de handle van het bestand dat wordt geopend.

Doe het zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
$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
 
Ozzie PHP

Ozzie PHP

07/10/2016 21:43:44
Quote Anchor link
Peter van Kroonenburg op 07/10/2016 17:53:33:
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?

Ik bedoelde dus ... geef eens het hele pad op in die unlink() functie. Ofwel:

unlink('/Users/MacbookPeter/web/sites/ONE/pvk/test/mag_weg.txt');

Doet ie het dan wel?
 
Peter van Kroonenburg

Peter van Kroonenburg

07/10/2016 22:32:51
Quote Anchor link
Pff, ja nu wist hij hem wel.
Weet echter nog niet wat ik verkeerd doe?
 
Ben van Velzen

Ben van Velzen

07/10/2016 22:42:53
Quote Anchor link
Vermoedelijk een verschil in de working directory. Dit kun je terugvinden door echo getcwd(); te doen.
 
Peter van Kroonenburg

Peter van Kroonenburg

07/10/2016 23:35:37
Quote Anchor link
Beste mensen,

Hartelijk dank voor jullie hulp. Door jullie aanwijzingen ben ik er nu achter wat het probleem was. Ik heb inderdaad een fout gemaakt in de instellingen van de working directory. Het werkt nu zoals het hoort.

En.. ik heb er veel van geleerd.

Bedankt, Peter
 
Ivo P

Ivo P

08/10/2016 00:15:19
Quote Anchor link
Adoptive Solution op 07/10/2016 12:45:22:

Op een Mac zijn 2 locaties om webpaginas te hosten.
.....


Dat ligt er maar aan wat je in httpd.conf opgeeft als locatie (of wat je bij de virtual hosts opgeeft.

Enige vereiste is dat de owner van het proces van de webserver (apache?) kan lezen in die map.
 
Ben van Velzen

Ben van Velzen

08/10/2016 01:35:50
Quote Anchor link
Ik heb cronjobs ook zien flaken om een correcte working dir. Iets met een race condition die dat af en toe veranderde. De devs toen waren al 2 weken op zoek naar wat het probleem was, en ik adviseerde een chdir(__DIR__) als start van de file. Nooit weer problemen :-)

Nu weet ik niet hoe Apache standaard wordt geconfigureerd op een mac, daar blijf ik mooi bij vandaan, maar mogelijk is de docroot anders, of heb je iets als een basedir restrictie, kan allemaal. Foutmeldingen staan sowieso uit, anders had je veel duidelijkere meldingen gehad.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.