I am trying to generate a PDF using DomPDF Library installed using Composer through cPanel.
When I try to generate the PDF using Browser, the PDF gets generated perfectly and stored to the directory.
Location of Cron Script
/public_html/admin/crons/generate_pdf.php
Cron Command
php -q /home/userdirectory/public_html/admin/crons/generate_pdf.php
generate_pdf.php calls a function Generate_PDF() from a library located at
public_html/admin/requisites/_library.php
Storage Directory of Generated PDFs
/public_html/admin/pdf/
This function Generate_PDF() calls the
../../../vendor/autoload.php
to load DomPDF Class
Issue : As I am using Cron, relative paths are not working here. Thus, I am unable to include the DomPDF Class for PDF Generation
generate_pdf.php (Cron Script)
require('/home/userdirectory/public_html/admin/config.php');
// config.php will include the _library.php as well
$START_DATE = WEEK_AHEAD;
$END_DATE = WEEK_AHEAD; //date("Y-m-d",strtotime(WEEK_AHEAD.' + 1 days'));
$UPCOMING_BOOKINGS = Get_Bookings_by_Date($con,$START_DATE,$END_DATE,'',1,'',true);
for($B=0;$B<count($UPCOMING_BOOKINGS);$B++)
{
$BOOKING_ID = $UPCOMING_BOOKINGS[$B]['booking_id'];
$GENERATE_PLAN = Generate_PDF($con,$BOOKING_ID);
// This function above is available in _library.php
echo $GENERATE_PLAN['pdf_url'];
}
_library.php
function Generate_PDF($con,$booking_id)
{
require '/home/userdirectory/vendor/autoload.php';
// instantiate and use the dompdf class
$dompdf = new Dompdf();
$options = $dompdf->getOptions();
$options->setDefaultFont('Poppins');
//$options->set('isPhpEnabled', 'true');
$dompdf->setOptions($options);
$html = '';
$html .= '<html><head>
<style type="text/css">
// styling for HTML PDF
</style>
';
$html .= '</head><body>';
$html .= 'All usual HTML code here... which is working fine when calling the script from Browser';
$dompdf->loadHtml($html);
// Render the HTML as PDF
$dompdf->render();
$output = $dompdf->output();
$FILE_NAME = 'Planner - '.$BOOKINF_ID;
// Save to PDF Directory
file_put_contents(PDF_DIRECTORY.$FILE_NAME.'.pdf', $output);
$PDF_URL = PDF_DIRECTORY_URL.$FILE_NAME.'.pdf';
// PDF_DIRECTORY_URL is defined in the config.php file which is simply to get a direct link for accessing the generated PDF
return array("pdf_url"=>$PDF_URL);
}
I have tried other options like dirname(__FILE__)
as well as usage of absolute paths, but none of them work.
Please help me to get this work