FPDF中的权限被拒绝问题

时间:2015-09-07 03:19:22

标签: php pdf fpdf

我有一些已经运行的代码,我已经将此代码转移到新的cpanel帐户,并且我遇到了类似的问题:

  

警告:fopen(downloads / liability / Ocean_Export_2015-09-03.pdf):   无法打开流:权限被拒绝   1025行/home/hdxxdev/public_html/include/PDFConverter/fpdf.php   FPDF错误:无法创建输出文件:   下载/责任/ Ocean_Export_2015-09-03.pdf

正在使用的文件夹: 下载 责任 档案

我有乐趣将它的许可从755更改为777,但它没有帮助。

代码的想法是采用日期或日期范围,查询所有客户,将其添加到PDF,压缩和下载。

PHP以防万一:

if($_SERVER['REQUEST_METHOD'] == 'POST'){
        require($_SERVER['DOCUMENT_ROOT'].'/include/PDFConverter/fpdf.php'); //file to turn PHP code into a PDF
        require_once('../include/PCLZip/pclzip.lib.php'); //file to turn PDF files into PDF
        require('../include/signature-to-image.php'); //code to convert signature code to an image.
        require('../include/resize.php'); //resize an image, sauce - http://www.white-hat-web-design.co.uk/blog/resizing-images-with-php/
        //Set timeout to 7.5 minutes
        ini_set('max_execution_time', 450);
        if($_POST['formIdentifier'] == "multiple_Date_Export"){
            $multiple_Date_Export = true;

            $thisDate = $_POST['fromDate'];
            $toDate = $_POST['toDate'];
            //These dates will be unmodified, will be used to name archive files
            $archiveFrom = $_POST['fromDate'];
            $archiveTo = $_POST['toDate'];
        }
        else{
            $thisDate = date("Y-m-d", strtotime($_POST['singleDate']));
            $toDate = $thisDate;
        }

        //While the from date is less than the to date
        while (strtotime($thisDate) <= strtotime($toDate)) {
            $query = mysqli_query($conn,"SELECT * FROM Customers WHERE travel_Date > '".$thisDate." 00:00:00' AND travel_Date < '".$thisDate." 23:59:59' ORDER BY l_Name");
            $indemResult = mysqli_query($conn,"SELECT * FROM Indemnity WHERE ind_Date <= '".$thisDate."' ORDER BY ind_Date desc");
            $indemRow = mysqli_fetch_array($indemResult);
            //echo "signature: ".$sigRow['signature'];
            /*turn PHP into PDF*/
            /*Turn JSON signature array into an image*/

            /*Create the PDF and configure*/
            $pdf = new PDF('P', 'mm', 'A4');

            $pdf->AliasNbPages();
            $pdf->SetMargins(0,5,0);
            $pdf->AddPage("P", "A4");
            $pdf->SetFont('Arial','',10);
            $pdf->cMargin = 10;
            //Display indemnity form and start page numbers
            $form = $indemRow['ind_Form'];
            $pdf->SetFont('Arial','',10);
            $text=$pdf->WriteHTML($form);

            //start keeping track of page numbers for table of contents
            $pdf->startPageNums(); 

            $pdf->MultiCell(0,0,$pdf->Write($text, ''));
            $pdf->AliasNbPages();


            //Code to display table of contents
            while($row = mysqli_fetch_array($query)){
                //Get name and page number, put into array
                $table_Of_Contents[$table_Of_Contents_Number] = $row['l_Name'].', '.$row['f_Name'];
                $table_Of_Contents_Number++;
            }

            //Move query back to first result.
            mysqli_data_seek($query, 0);

            while($row = mysqli_fetch_array($query)){
                //Make a new PDF page, add customer related details
                $pdf->SetMargins(0,25,0);
                $pdf->AddPage();

                //Add customer name into top left of page, setting the font to bold it
                $pdf->SetFont('Arial','B',10);
                $pdf->MultiCell(100,0,$pdf->WriteHTML('Passenger: '.$row['l_Name'].', '.$row['f_Name'], ''));
                $pdf->SetFont('Arial','',10);

                //Set X position to middle of page by moving it 100mm
                $pdf->SetX(100);

                //Add next lot of information to right of PDF
                $pdf->MultiCell(100,0,$pdf->WriteHTML('Travel Date: '.$row['travel_Date']));

                //Create a line break 5mm high
                $pdf->Ln('5');

                if( $row['child_1'] != "" || $row['child_2'] != ""){
                    $pdf->MultiCell(100,0,$pdf->WriteHTML('Minors: '.$row['child_1'].'. '.$row['child_2']));
                    $pdf->Ln('5');
                }
                if( $row['child_3'] != "" || $row['child_4'] != ""){
                    $pdf->MultiCell(100,0,$pdf->WriteHTML($row['child_3'].'. '.$row['child_4']));
                }
                $pdf->Ln('5');
                $pdf->MultiCell(100,0,$pdf->WriteHTML($row['address']));
                $pdf->SetX(100);

                if( $row['tour_ID'] != NULL || $row['tour_ID'] != "" ){


                    $tour_Query = mysqli_query($conn,"SELECT tour_Name FROM Tour WHERE tour_ID = '".$row['tour_ID']."'");
                    $row_Tour = mysqli_fetch_array($tour_Query);
                    $pdf->MultiCell(100,0,$pdf->WriteHTML('Tour Taken: '.$row_Tour['tour_Name']));
                }
                else{
                    $pdf->MultiCell(100,0,$pdf->WriteHTML('Tour Taken: - Nothing Entered -'));
                }

                $pdf->Ln('5');
                $pdf->MultiCell(100,0,$pdf->WriteHTML($row['suburb']));
                $pdf->Ln('5');
                $pdf->MultiCell(100,0,$pdf->WriteHTML($row['state'].', '.$row['country'].', '.$row['postcode']));

                $pdf->Ln('10');
                $pdf->MultiCell(100,0,$pdf->WriteHTML('Phone: '.$row['phone']));
                $pdf->SetX(100);
                $pdf->MultiCell(100,0,$pdf->WriteHTML('Email: '.$row['email']));

                //when done displaying content to page, add entry into TOC
                $pdf->TOC_Entry($row['l_Name'].', '.$row['f_Name'],''); 

                if( $row['signature'] != "" || $row['signature'] != NULL ){
                    //Display signature
                    $pdf->Ln('20');
                    $img = sigJsonToImage($row['signature'], array('imageSize'=>array(760, 390), 'drawMultiplier'=>1)); //turn into image
                    $imgLocation = '../tmp/';
                    imagepng($img, $imgLocation.'signature'.$row['customer_ID'].'.png');

                    //Call function to resize signature
                    $resize = new SimpleImage(); 
                    $resize->load('../tmp/signature'.$row['customer_ID'].'.png'); 
                    $resize->resize(398,255); 
                    $resize->save('../tmp/signature'.$row['customer_ID'].'.png');

                    //Insert Signature
                    $pdf->MultiCell(0,0,'I agree to the terms and conditions and confirm this is my signature:');
                    $pdf->Ln('10');
                    $pdf->SetX('85');
                    $pdf->Cell(10, 60, $pdf->Image('../tmp/signature'.$row['customer_ID'].'.png'),0,1,'R');
                }
            }//end while loop

            //Insert table of contents into page 1  
            $pdf->insertTOC(1);

            //If multiple dates were selected, we want to turn them into a zip file, and possible delete the files
            if($multiple_Date_Export){
                //$pdf->Output('../downloads/liability/Ocean_Rafting_Liability_Export_'.$thisDate.'.pdf', 'F');
                $pdf->Output('downloads/liability/Ocean_Rafting_Liability_Export_'.$thisDate.'.pdf', 'F');

            }
            else{
                $pdf->Output('Ocean_Rafting_Liability_Export_'.$thisDate.'.pdf', 'D');
            }
            $thisDate = date ("Y-m-d", strtotime("+1 day", strtotime($thisDate)));

        }//end while loop

        //Destroy image
        imagedestroy($img);

        //If multiple days are selected, we want to grab all files generated and zip them
        if($multiple_Date_Export){
            $dir = 'downloads/archive/';
            $archive = new PclZip($dir.'Ocean_Rafting_Liability_Export_'.$archiveFrom.'-'.$archiveTo.'.zip');
            $v_list = $archive->add('downloads/liability/',
                                    PCLZIP_OPT_REMOVE_ALL_PATH);
            if ($v_list == 0) {
                die("Error : ".$archive->errorInfo(true));
            }

            //Need to remove files from liability folder
            $files = glob('downloads/liability/*'); // get all file names
            foreach($files as $file){ // iterate files
              if(is_file($file))
                unlink($file); // delete file
            }

            //Force download of zip file through web browser
            $yourfile = $dir.'Ocean_Rafting_Liability_Export_'.$archiveFrom.'-'.$archiveTo.'.zip';
            $file_name = basename($yourfile);
            header("Content-Type: application/zip");
            header("Content-Disposition: attachment; filename=$file_name");
            header("Content-Length: " . filesize($yourfile));
            readfile($yourfile);
            //After user downloads file, remove archive
            if(is_file($yourfile)){
                unlink($yourfile);
            }
            exit;
        }

        //} //If form identifier 

0 个答案:

没有答案