[php] problemen met fopen*

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een probleem met fopen, ik heb een script geschreven (uitgebreider dan dit natuurlijk maar hier gaat het fout) wat af en toe werkt. D.w.z. het werkt op mijn eigen computer (localhost) met internet explorer en het werkt op een server als ik konqueror(linux) gebruik.

Het is de bedoeling dat het script een file uitleest. Behalve in bovenstaande gevallen geeft het programma aan dat het bestand niet kan worden uitgelezen.
Wat gaat hier fout? Aan het script kan het niet zozeer liggen lijkt mij aangezien er wel gevallen zijn waar het wel goed werkt. Heeft fopen() nog aparte bijwerkingen?
In de php documentatie kon ik geen verklaring voor het feit vinden dat verschillende browser op dezelfde computer verschillende dingen deden.

Een voorbeeld:
Als ik vanaf een computer bij mij op school het programma aanroep op een andere server met konqueror doet ie het wel, maar als ik vanaf de zelfde computer met bijv. mozilla werk kan fopen het bestand niet laden. Ook met internet explorer lukt het niet op die server, maar wel weer op mij eigen localhost.

Ik hoop dat dit iemand bekend voorkomt en mij uit de brand kan helpen.


[link http://217.121.246.221/jeroen/test.php] link naar het programma [/link]

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?
if(!isset($filename)) {
   //Het bestand is nog niet ingevoerd.  
  
  ?>
  <FORM ENCTYPE="multipart/form-data" ACTION="test.php"> Zoek bestand: 
  <P>
  <INPUT NAME="filename" TYPE="file">
  <P><INPUT TYPE="submit" VALUE="Ok">
  <?
}

else
{
  //Het bestand is ingevoerd. 
    
  $fd = fopen ($filename, "r") ;
                 //or die("Het bestand <strong>\"" . $filename . "\"</strong> kan niet worden geopend.<br>\n" );
    
  print("Het bestand ". $filename ." is geopend");
  fclose($fd);
}
?>

Acties:
  • 0 Henk 'm!

  • raphidae
  • Registratie: Februari 2001
  • Laatst online: 06-01 13:36

raphidae

...antichrist...

Gezien wat je probeert te doen kan je het wel vergeten.

fopen() leest alleen files lokaal aan de webserver, dus je kan nooit files lokaal aan de client lezen.

Maakt niet uit met welke browser.

Wat je wil doen is het bestand uploaden en dan het geuploade bestand openen: http://www.php.net/manual/tw/features.file-upload.php

[ Voor 26% gewijzigd door raphidae op 21-02-2003 22:17 ]

Every morning is the dawn of a new error.


Acties:
  • 0 Henk 'm!

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 12-09 01:23
@ jfrus: ten eerste welkom :) Fijn om te zien dat iemand de quickstarts leest! Maar het gedeelte over $_POST en $_GET en $_FILES heb je schijnbaar overgeslagen. Sinds versie 4.1.x kun je die gebruiken en sinds 4.2.x moet je ze gebruiken. Wat jij probeert (direct $filename aanspreken) werkt niet.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<? 
if(!isset($filename)) { 
   //Het bestand is nog niet ingevoerd.   
   
  ?> 
  <FORM ENCTYPE="multipart/form-data" ACTION="test.php"> Zoek bestand: 
  <P> 
  <INPUT NAME="filename" TYPE="file"> 
  <P><INPUT TYPE="submit" VALUE="Ok"> 
  <? 
} 

else 
{ 
  //Het bestand is ingevoerd. 
  $filename = $_FILES['filename']['tmp_name'];
  /* tmp_name is de naam van de file op de server
  originele naam zit in name ($_FILES['filename']['name']) */
  $fd = fopen ($filename, "r") ;
     
  print("Het bestand ". $filename ." is geopend"); 
  fclose($fd); 
} 
?>


Ow ja, raphidae: hij upload wel degelijk een file, maar roept hem verkeerd aan. Die filename bevat zelfs helemaal geen paden, alleen de bestandsnaam. Dus hij doet geen fopen lokaal hoor ;)

[ Voor 32% gewijzigd door Postman op 21-02-2003 23:06 . Reden: Layout verneuking ]


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Hoewel de opmerking van raphidae niet helemaal goed op je verhaaltje slaat, is de link die hij geeft wel erg nuttig, lees dat es rustig door.
(ah FlamerX zag zich geroepen wat uitgebreidere uitleg te geven :) )

[ Voor 20% gewijzigd door ACM op 21-02-2003 23:06 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt voor jullie reacties, het probleem is met julie hulp opgelost.
Ik wou er nog even aan te voegen voor andere mensen die dit ook probleem hebben dat de volgende code echt werkt. (De tag method="post" mistte nog bij)

PHP:
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
<?
if(!isset($filename)) {  
   //Het bestand is nog niet ingevoerd.    
    
  ?>  
  
  <form enctype="multipart/form-data" action="<? $php_self ?>" method="post">
  <input type="hidden" name="MAX_FILE_SIZE" value="3000000">
  Send this file: <input name="filename" type="file">
  <input type="submit" value="Send File">
  </form>
  
  <? 
  
}  

else  
{  
  //Het bestand is ingevoerd. 
  $filename = $_FILES['filename']['tmp_name']; 
  /* tmp_name is de naam van de file op de server 
  originele naam zit in name ($_FILES['filename']['name']) */ 
  
  $fd = fopen ($filename, "r") 
                             or die("het bestand kan niet worden geopend"); 
      
  print("Het bestand ". $_FILES['filename']['name'] ." is geopend");  
  fclose($fd);
}
?>