PHPscript in linux (ubuntu)
Als ik het vogende programma uitvoer:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$fileName="test2.txt";
print "Writing to $fileName<br>";
$fp=fopen($fileName, "w") or die("Couldn't open $fileName");
fwrite($fp, "Hello world\n");
fclose($fp);
print "Appending to $fileName<br>";
$fp=fopen($fielName, "a") or die("Couldn't open $fileName");
fputs($fp, "And another things\n");
fclose($fp);
?>
$fileName="test2.txt";
print "Writing to $fileName<br>";
$fp=fopen($fileName, "w") or die("Couldn't open $fileName");
fwrite($fp, "Hello world\n");
fclose($fp);
print "Appending to $fileName<br>";
$fp=fopen($fielName, "a") or die("Couldn't open $fileName");
fputs($fp, "And another things\n");
fclose($fp);
?>
dan krijg ik het volgende bericht:
Writing to test2.txt
Warning: fopen(test2.txt) [function.fopen]: failed to open stream: Permission denied in /var/www/listing11.13.php on line 4
Couldn't open test2.txt
Heeft iemand enig idee hoe ik dit probleem op kan lossen?
Alvast bedankt,
P-B
rechten geven om het bestand te mogen openen, ik denk chmodden naar 0777 of 0775
Jonathan:
Dat doe je door in de console naar de map te gaan waarin je tekstbestand staat, en dan als root (of eigenaar van het bestand) in te tikken:rechten geven om het bestand te mogen openen, ik denk chmodden naar 0777 of 0775
Quote:
chmod o+w naamvanbestand.txt
Eventueel kan je het ook vanuit je phpscript doen, maar dan moet je wel rechten hebben om het aan te mogen passen :)
Ik denk dat je geen schrijfrechten hebt in de directory.
sudo chmod 777 /var/www/listing11.13.php
sudo chmod 775 /var/www/listing11.13.php
maar het hielp niet.
Hoe komt het?
Trouwens bestaat het bestand test2.txt nog niet. Ik neem aan dat het programma zelf het zal moeten maken!
Probeer de hele map (in plaats van het bestand apart schrijfrechten te geven), en voeg eventueel --recursive toe (zodat mappen binnen die map ook gechmod worden).
Edit:
Het bestand wordt inderdaad aangemaakt als het nog niet bestaat (zie de optie 'w' op php.net). De oorzaak van je probleem is dus waarschijnlijk dat je geen schrijfrechten in de map hebt. (Kan dus ook liggen aan de rechten die PHP heeft).
Gewijzigd op 01/01/1970 01:00:00 door Winston Smith
Hoe staan de schrijfrechten van de map en wie is owner en wie is group?
drwxr-xr-x
1200755
De owner en group is root.
Ik heb ook met root account geprobeert maar het lukte mij niet!
Zou het aan php-rechten kunnen liggen?
Mehdi:
Schrijfrechten staan:
drwxr-xr-x
1200755
De owner en group is root.
Ik heb ook met root account geprobeert maar het lukte mij niet!
Zou het aan php-rechten kunnen liggen?
drwxr-xr-x
1200755
De owner en group is root.
Ik heb ook met root account geprobeert maar het lukte mij niet!
Zou het aan php-rechten kunnen liggen?
Root mag alles.
Maar als owner en group 'root' is en Apache draait, zoals het hoort, onder zijn eigen user (www of www-data of ....) dan mag Apache daar dus niet schrijven. Dus je script ook niet.
Als je nou echt ergens wilt gaan schrijven, dan log je in als root, maak een nieuwe directory in die map aan (public) en geef die nieuwe (lege) directory de 777 rechten. Dan is je site veilig en kan iedereen, dus ook je script in die nieuwe map schrijven.
Klopt dat allemaal?
Mehdi:
Dus volgens jou, moet ik me eerst uitloggen, daarna als root inloggen, naar /var/www gaan, een map maken, chmod 777 /vaar/www/map uitvoeren, weer uitloggen en als een normale gebruikers inloggen dan wordt het porbleem opgelost, als ik scripten in die map schrijf.
Klopt dat allemaal?
Klopt dat allemaal?
Ja. Noem de map public dan weet je gelijk aan de naam dat die open staat voor iedereen.
Ik ga nu de deur uit en ik kijk later weer even naar het topic.
Heel erg bedankt. Jij bent mijn engel.Het is opgelost. Mag ik je bericht sturen als ik weer iets tegenkom waar ik zelf niet uit kan?
Groetjes,
P-B
Gewijzigd op 01/01/1970 01:00:00 door M A