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
    England, High Wycombe Bucks
    0 Post(s)
    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:

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

    if (!@
    mysql_select_db('jo')) {
    '<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 = '
    $result = @mysql_query($sql);
      if (!
    $result) {
    'Database error: ' mysql_error());
    $file mysql_fetch_array($result);
      if (!
    $file) {
    '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));
    } 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) {
    'Database error: ' mysql_error());

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

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

    // Bail out if the file isn’t really an upload.
    if (!is_uploaded_file($_FILES['upload']['tmp_name'])) {
    '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 = '
          mimetype = '
          description = '
          filedata = '

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

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


    // Default page view: lists stored files

    $sql 'SELECT id, filename, mimetype, description FROM filestore';
    $filelist = @mysql_query($sql);
    if (!
    $filelist) {
    'Database error: ' mysql_error());
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    <html xmlns="">
    <title>PHP/MySQL File Repository</title>
    <meta http-equiv="content-type"
        content="text/html; charset=iso-8859-1" />

    <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>

    <p>The following files are stored in the database:</p>

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

    <tr valign="top">
        <a href="<?php echo $_SERVER['PHP_SELF']; ?>?action=view&id=<?php echo $f['id']; ?>">
          <?php echo $f['filename']; ?></a>
      <td><?php echo $f['mimetype']; ?></td>
      <td><?php echo $f['description']; ?></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?');"

    } else {
      <tr><td colspan="3">No Files!</td></tr>

    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?
    ; 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


Posting Permissions

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