Probleempje met funtion.unlink
ik gebruik al een tijdje een contactformulier met upload-functie op mijn website.
Nu wil ik deze op een andere site gebruiken.
Alles werkt inmiddels prima, behalve als er geen bestand ge-upload wordt, dan krijg ik de volgende melding:
Warning: unlink(uploads/) [function.unlink]: Is a directory in /home/deb57026/domains/blabla.nl/public_html/test/contact.php on line 197
De mail wordt wel gewoon netjes verstuurd. Het is dus puur een fout dat hij geen bestand kan vinden.
Zou het kunnen liggen aan het feit dat deze site op PHP 5.3 draait?
Het stukje code:
unlink( $conf['upload']['dir'] .$_FILES['attachment']['name'] );
Iemand enig idee??
Gewijzigd op 03/03/2012 17:05:26 door Tim Rigter
Tim Rigter op 03/03/2012 17:04:37:
behalve als er geen bestand ge-upload wordt
Met andere woorden; als je gewoon netjes controleert of er wel een bestand geupload is en dus niets doet als dat niet het geval is, dan is er niets aan de hand? Of denk ik dan te simpel?
Vermoedelijk heb je die unlink er in staan, zonder dat je controleert of er ook een bijlage is meegestuurd. Maak een if-statement --> als er een bestand is toegevoegd, dan unlink. Anders hoeft het niet.
if( move_uploaded_file( $_FILES['attachment']['tmp_name'], $conf['upload']['dir'] . $_FILES['attachment']['name'] ) ) {
$hasFile = true;
Wat doet die daar en wat is de link met je unlink? Je laat kleine stukjes code zien, waardoor het totale plaatje niet duidelijk is. Post eens wat meer relevante (!) code.
if( $hasFile = false ) {
unlink( $conf['upload']['dir'] .$_FILES['attachment']['name'] );
Nu werkt het helemaal goed :)
Toevoeging op 03/03/2012 17:32:34:
Tim Rigter op 03/03/2012 17:29:08:
Bedankt voor het meedenken Erwin, en vooral Obelix & Idefix
if( $hasFile = false ) {
unlink( $conf['upload']['dir'] .$_FILES['attachment']['name'] );
Nu werkt het helemaal goed :)
if( $hasFile = false ) {
unlink( $conf['upload']['dir'] .$_FILES['attachment']['name'] );
Nu werkt het helemaal goed :)
misschien eerst ff nadenken voor ik wat zeg. $hasFile moet natuurlijk true zijn, en dan heb ik dezelfde foutmelding weer
Toevoeging op 03/03/2012 17:36:11:
Stukje code:
if( $hasFile ) {
$mailer->AddAttachment( $conf['upload']['dir'] .$_FILES['attachment']['name'] );
}
// Verzenden van de email
if( !$mailer->Send( ) ) {
echo 'De volgende fout is opgetreden: ' .$mailer->errorInfo;
}
else {
// Melding geven dat de email is verzonden
echo $conf['succesMsg'];
// Unlink attachment
if( $hasFile = true ) {
unlink( $conf['upload']['dir'] .$_FILES['attachment']['name'] );
}}
}
}
// Zijn er fouten opgetreden?
if( count( $errors ) > 0 ) {
echo '<div class="errors">';
echo '<h2>De volgende fouten zijn opgetreden:</h2>';
//echo '<p>Vul de verplichte velden in</p> <br />';
// Doorlopen foutmeldingen
foreach( $errors as $errorKey => $value ) {
if( $errorKey != 'attachment' ) {
echo ' - [' .$value['code']. '] ' .$value['msg']. '<br />';
}
else {
foreach( $value as $val ) {
echo ' - ' .$val. '<br />';
}
}
}
echo '</div>';
if( $hasFile = true )
moet zijn:
if( $hasFile == true )
In ieder geval bedankt voor de snelle reactie!