SitePoint Sponsor

User Tag List

Results 1 to 12 of 12

Threaded View

  1. #1
    SitePoint Enthusiast wyte raven's Avatar
    Join Date
    Feb 2007
    Location
    England, High Wycombe Bucks
    Posts
    76
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Error with PHP 5.2 setup?

    Hello Everyone!

    Ok firstly! I have read the many other threads relating to problems like this, and although I'm a newbie at PHP/MySQL I'm almost positive that this is a problem with the setup, rather than an error in the script. The reason I say this is because the book follows PHP 5.1 and I'm currently using PHP 5.2 and I've noticed that at least one of the directories was a different path to what it should have been in the book. As far as I know, I have followed all the setup instructions that Kevin Yank suggested, which further tells me that I need to do something extra for the new version. His script should work, or atleast you'd think. I'm getting this error when I upload a file:

    Warning: filesize() [function.filesize]: stat failed for C:\WINDOWS\TEMP\phpE5.tmp in C:\Inetpub\wwwroot\filestore.php on line 85

    Warning: fread() [function.fread]: Length parameter must be greater than 0 in C:\Inetpub\wwwroot\filestore.php on line 85

    Warning: Cannot modify header information - headers already sent by (output started at C:\Inetpub\wwwroot\filestore.php:85) in C:\Inetpub\wwwroot\filestore.php on line 104


    This is the script that I copied and used from the archives (note that I have only changed the password and database name).

    PHP Code:
    <?php

    $dbcnx 
    = @mysql_connect('localhost''root''password');
    if (!
    $dbcnx) {
      exit(
    '<p>Unable to connect to the ' .
          
    'database server at this time.</p>');
    }

    if (!@
    mysql_select_db('jo')) {
      exit(
    '<p>Unable to locate the joke ' .
          
    'database at this time.</p>');
    }

    if (isset(
    $_GET['action'])) {
      
    $action $_GET['action'];
    } else {
      
    $action '';
    }

    if ((
    $action == 'view' or $action == 'dnld') and isset($_GET['id'])) {
      
    $id $_GET['id'];

      
    // User is retrieving a file
      
    $sql "SELECT filename, mimetype, filedata
          FROM filestore WHERE id = '
    $id'";
      
    $result = @mysql_query($sql);
      if (!
    $result) {
        exit(
    'Database error: ' mysql_error());
      }
      
      
    $file mysql_fetch_array($result);
      if (!
    $file) {
        exit(
    'File with given ID not found in database!');
      }
        
      
    $filename $file['filename'];
      
    $mimetype $file['mimetype'];
      
    $filedata $file['filedata'];
      
    $disposition 'inline';
      
      if (
    $action == 'dnld') {
        
    $disposition 'attachment';
        if (
    strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 5') or
            
    strpos($_SERVER['HTTP_USER_AGENT'], 'Opera 7')) {
          
    $mimetype 'application/x-download';
        }
      }
      
      
    header("content-disposition: $disposition; filename=$filename");
      
    header("content-type: $mimetype");
      
    header('content-length: ' strlen($filedata));
        
      echo(
    $filedata);
      exit();
      
    } elseif (
    $action == 'del' and isset($_GET['id'])) {
      
    $id $_GET['id'];
        
      
    // User is deleting a file
      
    $sql "DELETE FROM filestore WHERE id = '$id'";
      
    $ok = @mysql_query($sql);
      if (!
    $ok) {
        exit(
    'Database error: ' mysql_error());
      }

      
    header('location: ' $_SERVER['PHP_SELF']);
      exit();

    } elseif (isset(
    $_FILES['upload'])) {

      
    // Bail out if the file isn’t really an upload.
      
    if (!is_uploaded_file($_FILES['upload']['tmp_name'])) {
        exit(
    'There was no file uploaded!');
      }
      
    $uploadfile $_FILES['upload']['tmp_name'];
      
    $uploadname $_FILES['upload']['name'];
      
    $uploadtype $_FILES['upload']['type'];
      
    $uploaddesc $_POST['desc'];
          
      
    // Open file for binary reading ('rb')
      
    $tempfile fopen($uploadfile'rb');

      
    // Read the entire file into memory using PHP's
      // filesize function to get the file size.
      
    $filedata fread($tempfilefilesize($uploadfile));

      
    // Prepare for database insert by adding backslashes
      // before special characters.
      
    $filedata addslashes($filedata);

      
    // Create the SQL query.
      
    $sql "INSERT INTO filestore SET
          filename = '
    $uploadname',
          mimetype = '
    $uploadtype',
          description = '
    $uploaddesc',
          filedata = '
    $filedata'";

      
    // Perform the insert.
      
    $ok = @mysql_query($sql);
      if (!
    $ok) {
        exit(
    'Database error storing file: ' mysql_error());
      }

      
    header('location: ' $_SERVER['PHP_SELF']);
      exit();

    }

    // Default page view: lists stored files

    $sql 'SELECT id, filename, mimetype, description FROM filestore';
    $filelist = @mysql_query($sql);
    if (!
    $filelist) {
      exit(
    'Database error: ' mysql_error());
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>PHP/MySQL File Repository</title>
    <meta http-equiv="content-type"
        content="text/html; charset=iso-8859-1" />
    </head>
    <body>

    <h1>PHP/MySQL File Repository</h1>

    <form action="<?php echo $_SERVER['PHP_SELF']; ?>"
        method="post" enctype="multipart/form-data">
      <p><label>Upload File:<br />
        <input type="file" name="upload" /></label></p>
      <p><label>File Description:<br />
        <input type="text" name="desc" maxlength="255" /></label></p>
      <p><input type="submit" value="Upload" /></p>
    </form>

    <p>The following files are stored in the database:</p>
    <table>
    <tr>
      <th>Filename</th>
      <th>Type</th>
      <th>Description</th>
    </tr>
    <?php

    if (mysql_num_rows($filelist) > 0) {
      while (
    $f mysql_fetch_array($filelist)) {
        
    ?>

    <tr valign="top">
      <td>
        <a href="<?php echo $_SERVER['PHP_SELF']; ?>?action=view&id=<?php echo $f['id']; ?>">
          <?php echo $f['filename']; ?></a>
      </td>
      <td><?php echo $f['mimetype']; ?></td>
      <td><?php echo $f['description']; ?></td>
      <td>
        [<a href="<?php echo $_SERVER['PHP_SELF']; ?>?action=dnld&id=<?php echo $f['id']; ?>"
          >Download</a> |
        <a href="<?php echo $_SERVER['PHP_SELF']; ?>?action=del&id=<?php echo $f['id']; ?>"
          onclick="return confirm('Delete this file?');"
          >Delete</a>]
      </td>
    </tr>

        <?php
      
    }
    } else {
      
    ?>
      <tr><td colspan="3">No Files!</td></tr>
      <?php
    }
    ?>
    </table>
    </body>
    </html>

    I'm just curious, are these settings correct? I ask because it mentions in the script about a tmp directory, I don't think I have quite grasped this yet. Should there be something set to the upload_tmp_dir setting?
    Code:
    ;;;;;;;;;;;;;;;;
    ; File Uploads ;
    ;;;;;;;;;;;;;;;;
    
    ; Whether to allow HTTP file uploads.
    file_uploads = On
    
    ; Temporary directory for HTTP uploaded files (will use system default if not
    ; specified).
    ;upload_tmp_dir =
    
    ; Maximum allowed size for uploaded files.
    upload_max_filesize = 2M
    I appreciate any help you can offer.

    Thank you

    Wyte Raven
    Last edited by wyte raven; Mar 2, 2007 at 15:54.
    Wyte R@ven - Creator of the Rift


Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •