Note that there are some explanatory texts on larger screens.

plurals
  1. POPHP Readfile() not working for me and I don't know why
    primarykey
    data
    text
    <p>I am trying to get this code to work but for some reason, all the echo's are able to output correct content, but the headers don't seem to want to force the download of my document. What follows is the file I am trying to build for file downloads. It is set to input code like this: <code>downloader.php?f=13&amp;t=doc</code> to download a file that is named <code>201-xxx.doc</code> or <code>201-xxx.pdf</code> from one of two folders depending on the users privileges.</p> <p>All the logic works up to the header info at the bottom. If I comment out the header content type and the header content disposition, then it will read the file into the browser. With either of those lines included, it give me an error that says <code>"Error 6 (net::ERR_FILE_NOT_FOUND): The file or directory could not be found."</code> </p> <pre><code>&lt;?php //ob_start(); if ( !defined('__DIR__') ) define('__DIR__', dirname(__FILE__)); define( "TLOJ_FSROOT", __DIR__ . "/" ); define('WP_USE_THEMES', false); require('./wp-blog-header.php'); $lessonnumber = $_REQUEST['f']; $type = $_REQUEST['t']; if ( $lessonnumber &lt; '10' ) { $threedigitlesson = '00' . $lessonnumber; } elseif ( $lessonnumber &lt; '100' ) { $threedigitlesson = '0' . $lessonnumber; } else { $threedigitlesson = $lessonnumber; } $filenamestart = "201-" . $threedigitlesson; $contenttype = 'application/octet-stream'; switch ($type) { case 'pdf': $extension = '.' . $type; $contenttype = 'application/pdf'; break; case 'doc': $extension = '.' . $type; $contenttype = 'application/msword'; break; default: $contenttype = ''; exit("It appears that you are trying to download a file that is not a lesson document. Please contact us if you believe this to be an error."); } $filename = $filenamestart . '.' . $type; $current_user = wp_get_current_user(); //$siteurl = site_url(); $pathroot = TLOJ_FSROOT; $download_path = $pathroot . "1hoefl4priaspoafr/"; if ( current_user_can("access_s2member_ccap_extendedlessons")) { $download_path = $download_path . "ex/"; } else { $download_path = $download_path . "st/"; } $file_path = $download_path . $filename; $tlojmemberlength = tlojunlocklessons(); if ( !is_user_logged_in() ) { exit("Please log in to access the file"); } if ( !current_user_can("access_s2member_ccap_downloadlessons") ) { exit("You don't have access to download the lessons!"); } if ( $lessonnumber &gt; $tlojmemberlength ) { exit("It appears you are trying to jump ahead! While I am excited at your enthusiam, let's not rush our study time."); } if ( ($lessonnumber &gt; '195') &amp;&amp; (!current_user_can("access_s2member_ccap_lastweek")) ) { exit("Upgrade now to access the downloads for the five bonus lessons!"); } // build Final File Name $extendedmessage = ""; if ( current_user_can("access_s2member_ccap_extendedlessons")) { $extendedmessage = " - Extended"; } $myfinishedlessonname = "Lesson " . $lessonnumber . $extendedmessage . " -- The Life of Jesus Study" . "." . $type; // echo 'Download Path: ' . $download_path . '&lt;br /&gt;'; // echo 'Source/Lesson Number: ' . $lessonnumber . '&lt;br /&gt;'; // echo 'File Name: ' . $filename . '&lt;br /&gt;'; // echo 'File Type: ' . $type . '&lt;br /&gt;'; // echo 'Allowed Lessons: ' . $tlojmemberlength . '&lt;br /&gt;'; // echo 'Final File Name: ' . $myfinishedlessonname . '&lt;br /&gt;'; // echo 'File Path: ' . $file_path . '&lt;br /&gt;'; // echo 'Content Type: ' . $contenttype . '&lt;br /&gt;'; // echo 'File Size: ' . filesize($file_path) . '&lt;br /&gt;'; if (headers_sent()) { exit("Sorry but the headers have already been sent."); } ob_end_clean(); if (file_exists($file_path)) { header('Content-Description: File Transfer'); header('Content-type: ' . $contenttype); header('Content-disposition: attachment; filename="' . $myfinishedlessonname . '"'); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: '); header('Pragma: '); header('Content-Length: ' . filesize($file_path)); flush(); ob_clean(); readfile($file_path); exit; } else { exit("No file present."); } ?&gt; </code></pre> <p>Please help as I have been at this all day and am confused to no end why this won't work. Filesize() pulls the correct length so I know there is a file in the path that I am looking at. <em>(I am also new to PHP, so if there is something that I am missing, please share.)</em></p> <p>Thanks in advance!</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload