HTML2PDF 504网关超时

时间:2019-04-09 04:53:43

标签: php server cpanel tcpdf html2pdf

我正在尝试使用this库转换HTML 2 PDF,并按照我的期望很好地转换。

但是,当我转换更多数据时,它给我一个错误,提示 504网关超时。这是我得到的错误屏幕截图。

enter image description here

在本地服务器上可以正常工作。我的本地服务器和实时服务器(Linux)都具有相同的服务器。唯一的问题是,当我尝试在实时服务器上生成包含长数据的PDF时遇到了问题。

我研究发现,这样做可以增加php执行时间和其他设置。因此,我尝试将以下代码放入我的 .php 文件中。

ini_set('max_execution_time', 60000);
ini_set('post_max_size','128M');
ini_set('upload_max_filesize','128M');

我什至尝试将max_execution_time设置为0-1,但是它对我不起作用。设置此值后,我什至用phpinfo()打印了更新的值,这些值被覆盖,但是出现相同的 502网关超时错误。这是一小段代码,以防万一。

<?php

ini_set('max_execution_time', 60000);
ini_set('post_max_size','20M');
ini_set('upload_max_filesize','8M');

require_once dirname(__FILE__) . '/vendor/autoload.php';
require_once dirname(__FILE__) . '/templateInfo.php';

use Spipu\Html2Pdf\Html2Pdf;
use Spipu\Html2Pdf\Exception\Html2PdfException;
use Spipu\Html2Pdf\Exception\ExceptionFormatter;
use technobrave\brochuresettings\Models\Brochuresettings as BS;
use Technobrave\Transactions\Models\Transactions as TR;
use Technobrave\Offices\Models\Offices;
use technobrave\themesettings\Models\ThemeSetting as TS;
use Technobrave\Team\Models\Team;



class generateTemplate {



    public $theme = "";

    public $theme_settings = array();

    public function __construct($templateId, $resolution , $theme ,$pdf_sections = array(),$openFile = false, $finalPdfFile = null) {

        $this->getBrochureTransactionData = BS::first();
        $this->getPdfSection = $pdf_sections;
        $this->theme_settings = TS::first();
        $this->theme = $theme;
        $this->baseUrl = url(Config::get('cms'));
        $this->teamPageName = $this->baseUrl . '/our-team';
        $this->capabilitiesPageName = $this->baseUrl . '/capabilities';
        $this->getFooterText = $this->getFooterText();
        $getTeamId = (isset($_GET['teamId']) && !empty($_GET['teamId'])) ? $_GET['teamId'] : "";
        $this->uniquePath = __DIR__ . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR;
        $templatePath = __DIR__ . DIRECTORY_SEPARATOR . 'regency_template' . DIRECTORY_SEPARATOR . $getTeamId . DIRECTORY_SEPARATOR . $templateId . '.php';
        $templateInfoText = new templateInfo($templateId, $this->uniquePath, $getTeamId);
        $this->customImagePath = $this->uniquePath;

        foreach ($templateInfoText->defaultValues as $key => $value) {
            $this->{$key} = $value;
        }


        $template = file_get_contents($templatePath);



        try 
        {

            $html2pdf = new Html2Pdf('L','A4', 'en', true, 'UTF-8', array(0, 0, 0, 0));
            $html2pdf->Addfont('perpetua');
            $html2pdf->Addfont('montserratbold');
            $html2pdf->Addfont('montserratmedium');
            $html2pdf->Addfont('montserratregular');
            $html2pdf->Addfont('montserratsembold');
            $html2pdf->Addfont('montserratitalic');
            $html2pdf->writeHTML($template, false);

            $html2pdf->Output('regency_corporate_brochure.pdf', 'D');


        } catch (Html2PdfException $e) {
            $formatter = new ExceptionFormater($e);
            echo $formatter->getHtmlMessage();
        }

    }
}

我尝试预览HTML的生成方式及其生成方式,而没有任何错误。

$html2pdf->writeHTML($template, true); 

根据我到目前为止的理解,基本上我在这里面临服务器问题。

有人可以指导我从现在开始该怎么做才能解决此问题。

1 个答案:

答案 0 :(得分:2)

经过严格的调试后,我发现我的问题是我在PDF中包含了一个外部图像,并且服务器无法访问服务器图像(服务器只能通过白名单IP进行访问)。