我的PDF生成器脚本有问题(使用html2pdf lib)。 手动启动时脚本运行正常但在作为cron任务启动时会返回此错误。
TCPDF错误:无法创建输出文件:/0000/images/upload/demonstration/factures/2016-05-demonstration.pdf
以下是创建过程中涉及的脚本部分。
require('html2pdf/html2pdf.class.php');
try
{
$pdf = new HTML2PDF('P','A4','fr');
$pdf->writeHTML($content);
ob_end_clean();
$pdf->Output(''.$_SERVER['DOCUMENT_ROOT'] . '/0000/images/upload/'.$data["id_client"].'/factures/'.$fichier.'.pdf', 'F');
}
catch(HTML2PDF_exception $e) {
die($e);
}
我在其他线程中尝试了许多解决方案但到目前为止没有任何工作。文件和目录具有权限777,我正在使用正确的绝对路径(事实上它可以手动证明它)。
有什么想法吗?
答案 0 :(得分:1)
$ _ SERVER [' DOCUMENT_ROOT']不可用,因为DOCUMENT_ROOT是VHost配置中设置的Apache变量。您可以在错误消息中看到该变量显然为空,并且它正在尝试写入名为" 0000"的目录。在您的操作系统的根目录中。
在通过CLI运行时,您必须以其他方式设置文档根目录,如:
第1步
找出文档根目录的实际内容。你可以这样做:
die(var_dump($_SERVER['DOCUMENT_ROOT']));
确保通过网络浏览器(而非cron)运行上述临时代码,它会告诉您文档根目录是什么。
第2步
选择我上面提供的一个选项。
我们假设您选择选项4(硬编码)。使用您在上面的步骤1中获得的任何路径替换代码中的$ _SERVER [' DOCUMENT_ROOT']。它现在可以通过浏览器和通过cron工作。
重要说明:文档根目录在服务器之间发生更改,因此,如果您要将代码部署到另一台服务器,则必须知道该特定服务器上的文档根目录。