我使用一个名为PDFmerger的库,自然地,它将pdf合并在一起。我希望每天晚上运行一个 cron 来构建它们,以便为第二天做好准备。问题是当我在第一个代码之后运行代码时,它失败了,因为它正在尝试重新声明类。
for
声明...
foreach ($pdfs_to_build as $pdf) {
// do stuff
$this->merge_pdfs($pdf['pdf_id']);
}
还有我在循环中运行的 pdf 合并代码......
$pdf = new PDFMerger;
$pdf->addPDF(DIR_BOOKS.$book_path.'/static-pages/page-1.pdf', '1');
$pdf->addPDF(DIR_FINAL_PDFS.$pdf_id.'/custom-page-1.pdf','1');
$pdf->addPDF(DIR_BOOKS.$book_path.'/static-pages/page-2.pdf', '1');
$pdf->merge('file', DIR_FINAL_PDFS.$pdf_id.'/final-build-'.$pdf_id.'.pdf');
第一个 1 完成后的错误,我们已经进入下一个......
致命错误:无法在第 24 行的/var/www/example/pdfmerger/PDFMerger.php 中重新声明类 PDFMerger
我想知道是否有解决方法?
问题不在于你给new PDFMerger
打了两次电话,这是完全可以接受的。 问题是文件:
/var/www/example/pdfmerger/PDFMerger.php
正在被include
(或以其他方式执行)两次,在第 24 行:
class PDFMerger {
这就是触发错误的原因,该类已经被声明了。 弄清楚为什么该文件被包含两次,您的错误就会消失。
你的代码很好。这不会失败。但是,您发布的内容中未列出,您包括PDFMerger.php
.可能是通过在循环内运行 https://pdfmerger.codeplex.com/显示include 'PDFMerger.php';
。
只需将该行移出循环和/或将include
更改为 include_once
即可。