我正在使用名为PDFmerger的库,当然,它将pdfs合并在一起。我希望每天晚上运行一个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
我想知道是否有解决方法?
答案 0 :(得分:2)
问题不在于你两次致电new PDFMerger
,这是完全可以接受的。问题是文件:
/var/www/example/pdfmerger/PDFMerger.php
正在include
' d(或以其他方式执行)两次,其中有第24行:
class PDFMerger {
这就是触发你的错误,该类已经被声明了。找出为什么该文件被包含两次,你的错误将被清除。
答案 1 :(得分:0)
你的代码很好。那不会失败。但是,未列在您发布的内容中,您包括PDFMerger.php
。
可能是在https://pdfmerger.codeplex.com/显示的include 'PDFMerger.php';
在循环内运行。
只需将该行移出循环和/或将include
更改为include_once
。