我正在尝试将Excel文件转换为PDF(Base64)。
这是将Excel转换为PDF的代码:
$spreadsheet = $this->objPHPExcel = \PhpOffice\PhpSpreadsheet\IOFactory::load("MyExcelFile.xlsx");
$class = \PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf::class;
\PhpOffice\PhpSpreadsheet\IOFactory::registerWriter('Pdf', $class);
$this->objPHPExcel = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Pdf');
$this->objPHPExcel->writeAllSheets();
//Save the file. (THIS IS WHERE THE ERROR OCCUR)
$this->objPHPExcel->save(storage_path() . '/app/temp_files/' . $newFileName);
一切都在本地运行,但是每当我尝试在Laravel Forge服务器上运行相同的代码时,都会遇到以下错误:
unlink(/tmp/imagick-3.4.0.tgz): Operation not permitted
如果我跟踪错误,则在此特定行中:
$this->objPHPExcel->save(storage_path() . '/app/temp_files/' . $newFileName);
如前所述,此代码在本地运行良好。临时文件$newFileName
在我的/temp_files
文件夹中创建。
我在做什么错了?
答案 0 :(得分:0)
好吧,解决这个问题很棘手。我发现与Phpspreadsheet
无关,而与Mpdf
无关。
问题是文件“ imagick-3.4.0.tgz”文件许可权设置为只读。请注意,unlink
无法在此特定文件上运行。这一直可以追溯到我第一次安装imagick
库时。
解决方案是转到/tmp
文件夹并手动删除imagick-3.4.0.tgz
文件。在进行imagick
安装时,实际上应该删除此文件夹。