[PHP] copy na file upload crashed onder Apache/PHP

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Rodyman
  • Registratie: November 2001
  • Laatst online: 08-06-2024
Ik heb de volgende server:

Windows 2000 Server
Apache/1.3.31 (Win32) PHP/4.3.8

Hier wil ik een php file een word document laten uploaden. Hier gaat het fout, zodra de move_uploaded_file (of copy) wordt aangeroepen, nadat ik eerst gecontroleerd heb dat er een file wordt geupload, hangt de server voor ongeveer een minuut.

Gedurende deze minuut is er 100% cpu load en uiteindelijk kopieert ie de file toch niet.

Het uploaden gaat wel goed, maar het verplaatsen van het word documentje gaat fout (+-70kb)

Hieronder de code voor het uploaden: (move_uploaded_file, rename en copy geven allemaal hetzelfde probleem.
PHP:
1
2
3
4
5
6
7
8
$tempName    = "CV-Voornaam-Achternaam.doc";
$tempFolder  = "C:\\Temp\\2004\\";

//Controleer of de file geupload is
if (is_uploaded_file($filename)) {
    //file kopiëren naar de juiste folder
    copy($filename, $tempFolder.$tempName);
}

Acties:
  • 0 Henk 'm!

  • Devion
  • Registratie: Januari 2000
  • Laatst online: 28-02 15:59

Devion

Space for rent ;-)

Chmod goed staan? Want dat mis ik een beetje in je post :)
(Edit: oops, windows..)

[ Voor 19% gewijzigd door Devion op 18-08-2004 12:21 . Reden: Ik moet beter lezen -.- ]


Acties:
  • 0 Henk 'm!

  • simon
  • Registratie: Maart 2002
  • Laatst online: 00:18
Heb je error_reporting op E_ALL staan?
Devion schreef op 18 augustus 2004 @ 12:17:
Chmod goed staan? Want dat mis ik een beetje in je post :)
't is windows hé. Daar heb je geen chmod :P

[ Voor 74% gewijzigd door simon op 18-08-2004 12:18 ]

|>


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?
$tempName    = "CV-Voornaam-Achternaam.doc";
$tempFolder  = "C:\\Temp\\2004\\";

//Controleer of de file geupload is
if (is_uploaded_file($filename)) {
  echo 1;
    //file kopiëren naar de juiste folder
    copy($filename, $tempFolder.$tempName);
}
?> 
zie je de 1?

Acties:
  • 0 Henk 'm!

  • Rodyman
  • Registratie: November 2001
  • Laatst online: 08-06-2024
djluc schreef op 18 augustus 2004 @ 12:21:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?
$tempName    = "CV-Voornaam-Achternaam.doc";
$tempFolder  = "C:\\Temp\\2004\\";

//Controleer of de file geupload is
if (is_uploaded_file($filename)) {
  echo 1;
    //file kopiëren naar de juiste folder
    copy($filename, $tempFolder.$tempName);
}
?> 
zie je de 1?
jep ik zie de 1...

Acties:
  • 0 Henk 'm!

  • Rodyman
  • Registratie: November 2001
  • Laatst online: 08-06-2024
Simon schreef op 18 augustus 2004 @ 12:17:
Heb je error_reporting op E_ALL staan?

[...]

't is windows hé. Daar heb je geen chmod :P
Yep, helpt niets, geen melding of niets.

Acties:
  • 0 Henk 'm!

Verwijderd

Verander die tempFolder eens naar:
PHP:
1
$tempFolder  = "C:/Temp/2004/";

Acties:
  • 0 Henk 'm!

  • WPN
  • Registratie: Augustus 2003
  • Laatst online: 24-07 21:14

WPN

en als je probeert te kijken of de $filename ook echt gevuld is?
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?
$tempName    = "CV-Voornaam-Achternaam.doc";
$tempFolder  = "C:\\Temp\\2004\\";

//Controleer of de file geupload is
if (is_uploaded_file($filename)) {
  echo $filename;
    //file kopiëren naar de juiste folder
    copy($filename, $tempFolder.$tempName);
}
?> 



ik weet dat die if constructie dat zou moeten opvange, maar proberen kan je altijd
en als je die tempName eens korter maakt.... 8.3 formaat
8 characters voor de punt en die drie erachter

Als ik denk zoals ik dacht, dan doe ik zoals ik deed, als ik doe zoals ik deed, dan denk ik zoals ik dacht! Cogito Ergo Sum


Acties:
  • 0 Henk 'm!

  • Rodyman
  • Registratie: November 2001
  • Laatst online: 08-06-2024
Peluso schreef op 18 augustus 2004 @ 12:53:
en als je probeert te kijken of de $filename ook echt gevuld is?
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?
$tempName    = "CV-Voornaam-Achternaam.doc";
$tempFolder  = "C:\\Temp\\2004\\";

//Controleer of de file geupload is
if (is_uploaded_file($filename)) {
  echo $filename;
    //file kopiëren naar de juiste folder
    copy($filename, $tempFolder.$tempName);
}
?> 



ik weet dat die if constructie dat zou moeten opvange, maar proberen kan je altijd
en als je die tempName eens korter maakt.... 8.3 formaat
8 characters voor de punt en die drie erachter
$filename is wel echt gevuld, filename naar een kortere versie gemaakt, zelfde probleem. :(

Heb het idee dat het iets met een Apache instelling is ofzo

Acties:
  • 0 Henk 'm!

  • Rodyman
  • Registratie: November 2001
  • Laatst online: 08-06-2024
Verwijderd schreef op 18 augustus 2004 @ 12:49:
Verander die tempFolder eens naar:
PHP:
1
$tempFolder  = "C:/Temp/2004/";
Done, zelfde probleem.

Acties:
  • 0 Henk 'm!

  • DizzyWeb
  • Registratie: Februari 2001
  • Laatst online: 20:49

DizzyWeb

Ondertiteld

Sowieso heb je hiervoor de move_uploaded_file() functie...

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

move_uploaded_file, rename en copy geven allemaal hetzelfde probleem.
Maaruh.. een beetje kijken naar code enzo lijkt me nogal onzinnig, aangezien een fout path of wat dan ook nooit de server mag crashen/hangen.

Heb je al een reinstall geprobeerd?

[ Voor 10% gewijzigd door Bosmonster op 18-08-2004 13:36 ]


Acties:
  • 0 Henk 'm!

  • FitNiX
  • Registratie: April 2001
  • Laatst online: 01-09 15:18
Het probleem is opgelost, mijn (dadelijk dode :P) maat Rodyman riep mijn attachment-mail functie met een verkeerde parameter aan waardoor hij de file direct weer weggooide |:( |:(

Het probleem zit dus niet in het uploaden van de file, maar dat ligt bij het mailen. Hij probeert de zojuist geuploade file te mailen naar een adres, maar dat schijnt heeeeel erg lang te duren (afhankelijk van de grootte vh attachment)

Onze vraagstelling is dus iets aangepast:
* FitNiX Waarom duurt het mailen in godsnaam zo lang. Als we de functie draaien op een server van een hoster, is ie gewoen snel, draaien we de functie locaal, dan is ie bagger traag.
En we hebben gewoon genoeg upload hierzo :?'
Hieronder onze mail functie waarin je een attachment kan bevestigen:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//Mail functie met HTML opmaak  +  Attachment
function sendAttachmail($receiver, $subject, $content, $folder, $filename,
                        $filetype, $deleteFile, $from='user@server.com') {
    $file       = $folder . $filename;
    //Read the file on the server
    $filedata   = fread(fopen($file,"r"),filesize($file));
    $filedata   = chunk_split(base64_encode($filedata));
    $UID         = strtoupper(md5(uniqid(time())));
    $name       = basename($file);

    //Delete file from server
    if (!strcmp($deleteFile,"1")) {
        unlink($file);
    }

    //HTML open TAGS
    $message    = "<HTML><HEAD>";
    $message    .= "</HEAD><BODY>";
    //Jouw bericht eraan vastmaken
    $message    .= $content;
    //HTML sluit TAGS
    $message    .= "</BODY></HTML>\n\n";
    $content     = $message;

    //Compose the entire mail-content
    $header = "From: ".$from."\n";
    $header .= "Reply-To: ".$from."\n";
    $header .= "MIME-Version: 1.0\n";
    $header .= "Content-Type: multipart/mixed; boundary=".$UID."\n";
    $header .= "--".$UID."\n";
    $header .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
    $header .= "Content-Transfer-Encoding: 8bit\n\n";
    $header .= $content."\n";
    $header .= "--".$UID."\n";
    $header .= "Content-Type: ".$filetype."; name=\"".$name."\"\n";
    $header .= "Content-Transfer-Encoding: base64\n";
    $header .= "Content-Disposition: attachment; filename=\"".$name."\"\n\n";
    $header .= $filedata."\n";
    $header .= "--".$UID."--";

    $succes = mail($receiver, $subject, "", $header);

    return $succes;
}
PHP:
1
2
3
4
//Delete file from server
if (!strcmp($deleteFile,"1")) {
    unlink($file);
}
Hier zat de 1e boosdoener dus :D

[ Voor 34% gewijzigd door FitNiX op 18-08-2004 14:22 ]


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Lokaal upload je het naar een SMTP server (onder windows) en onder Linux wordt ie lokaal verstuurd via sendmail?

Bij de ene handelt PHP de upload af en moet je dus wachten tot die klaar is, bij de tweede doet een extern programma dat en is het script dus zo klaar (sendmail of qmail whatever handelt dat dan verder af).

[ Voor 73% gewijzigd door Bosmonster op 18-08-2004 16:12 ]


Acties:
  • 0 Henk 'm!

  • FitNiX
  • Registratie: April 2001
  • Laatst online: 01-09 15:18
Bosmonster schreef op 18 augustus 2004 @ 16:11:
Lokaal upload je het naar een SMTP server (onder windows) en onder Linux wordt ie lokaal verstuurd via sendmail?

Bij de ene handelt PHP de upload af en moet je dus wachten tot die klaar is, bij de tweede doet een extern programma dat en is het script dus zo klaar (sendmail of qmail whatever handelt dat dan verder af).
We hebben nu idd een andere manier van het verzenden van email, eentje die direct contact maakt met de mail server... Die werkt echt als een tiet 8)

Mannen: Bedankt voor de replies _/-\o_

[ Voor 4% gewijzigd door FitNiX op 18-08-2004 16:32 ]

Pagina: 1