[PHP] fopen foutmelding bij nieuwe file creeren

Pagina: 1
Acties:

  • Steam
  • Registratie: Juli 2001
  • Laatst online: 26-11-2021

Steam

just getting there

Topicstarter
Ik wil een gastenboek maken met php en MySQL. De naam van de persoon die iets schrijft sla ik met een ID op in MySQL, en de tekst wil ik in een directory opslaan als /pad/ID.txt , leek me niet zo lastig.
maar als ik dit doe:

$id=mysql_insert_id();
$fp=fopen("$pad$id.txt","w");
fwrite($fp,$tekst);

dan krijg ik:
Warning: fopen("../gastenboek/23.inc","w") - No such file or directory in /dir/gast.php in de 2de regel
Warning: Supplied argument is not a valid File-Handle resource in /dir/gast.php in de 3de regel

Volgens de php-manual moet het toch zo kunnen? Ik heb schrijfrechten in de dir, en ik krijg ook geen foutmelding over de toegangsrechten.
Een search leverde alleen bovenstaande script-knipsels op.

Nobody knows nothing... some of us just know very little


  • EL_Loco
  • Registratie: Oktober 2001
  • Laatst online: 08-11-2023

EL_Loco

alias Haco

waarom zet je de text niet makkeljik in een textvak van 255 tekens in je DB :?

rumores non hiatus dremelunt
malleo omnia consentiunt
Lid van het Anti-Jamba front!


  • Steam
  • Registratie: Juli 2001
  • Laatst online: 26-11-2021

Steam

just getting there

Topicstarter
Omdat sommige mensen zo enthousiast zijn dat ze meer dan 250 tekens rammelen, en daarnaast heb ik maar 5Mb database, en wel 250Mb webspace...

Nobody knows nothing... some of us just know very little


  • The Bad Seed
  • Registratie: November 2001
  • Laatst online: 08:50

The Bad Seed

Chaotic since 1983

Sommige hosters laten php scripts niet toe om nieuwe files te maken, geloof ik.
De oplossing hiervoor is dat je een bestand van 0 bytes maakt in notepad, opslaat onder de juise naam en uploadt naar de locatie waar je je bestand wilt laten schrijven.

Hail to the guardians of the watchtowers of the north


  • Steam
  • Registratie: Juli 2001
  • Laatst online: 26-11-2021

Steam

just getting there

Topicstarter
Duracell: als dat de enige manier is, moet ik dus heel erg veel bestandjes aanmaken, en hopen dat ik ze op tijd weer bijvul, voordat ze opgebruikt raken.

Stekkel: ja daar heb ik bovenstaande code ook vandaan, of wil je me iets specifieks duidelijk maken?

Nobody knows nothing... some of us just know very little


Verwijderd

Het is beter dit binnen een if statement te plaatsten. Zo kun je controleren of het openen van de file descriptor op de juiste wijze gaat. Bijvoorbeeld als volgt:

code:
1
2
3
4
5
if ($fd = fopen("bestandsnaam", "w")) {
             echo "Nu kan ik schrijven !";
} else {
             echo "Nu mag ik niet schrijven";
}


Tevens kan het zijn dat je onder een Unix variant geen schrijfrechten hebt binnen een bepaalde directory. (En ja, tevens binnen bepaalde Windows varianten ;) ).
Probeer bijvoorbeeld eens of je een bestand mag 'touchen' met de functie 'touch()'.

  • The Bad Seed
  • Registratie: November 2001
  • Laatst online: 08:50

The Bad Seed

Chaotic since 1983

Steam schreef op 10 oktober 2002 @ 21:29:
Duracell: als dat de enige manier is, moet ik dus heel erg veel bestandjes aanmaken, en hopen dat ik ze op tijd weer bijvul, voordat ze opgebruikt raken.
[..]
Sorry, ik had niet goed naar je codefragmentje gekeken en zo dus niet gezien dat er een variabele in de bestandsnaam verwerkt zat.

Heeft de gebruiker die als webserver draait wel toegang tot die map?

Hail to the guardians of the watchtowers of the north


  • Steam
  • Registratie: Juli 2001
  • Laatst online: 26-11-2021

Steam

just getting there

Topicstarter
Ik mag chmod doen, en heb alles open gezet, maar nog geen succes. Ik kan ook wel naar een bestaand bestand schrijven op bovenstaande manieer. Maar ik krijg geen filehandler naar een bestand dat nog moet worden aangemaakt. Ik heb me dus al de hele avond suf lopen googelen naar iets als fcreate of zo.

Verhip, ik zie ineens dat wat ik veranderd heb, gewoon weer op de originele manier staat! Ik heb dus inderdaad geen rechten. Sorry hoor, zit jullie tijd te verpesten. Moet ik mijn provider maar vragen hoe ik dat moet oplossen...
In ieder geval hartelijk bedankt voor jullie reacties!

Nobody knows nothing... some of us just know very little


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Steam schreef op 10 oktober 2002 @ 21:15:
$id=mysql_insert_id();
$fp=fopen("$pad$id.txt","w");
fwrite($fp,$tekst);

dan krijg ik:
Warning: fopen("../gastenboek/23.inc","w") - No such file or directory in /dir/gast.php in de 2de regel
Warning: Supplied argument is not a valid File-Handle resource in /dir/gast.php in de 3de regel

Die supplied argument blabla is logisch, als de fopen al mis gaat kan de fwrite nooit goed gaan.

De fopen melding is misschien wat onduidelijk, maar zal in dit geval beteken dat er geen ../gastenboek dir is... en dan is het erg vervelend daar een file in aanmaken :)

Deze melding heeft overigens _niets_ met rechten te maken, dan zou er een "Permission denied" oid komen...
Pagina: 1