PHP-将Excel转换为PDF(Phpspreadsheet)-不允许进行操作

时间:2019-03-11 10:18:08

标签: php excel phpspreadsheet

我正在尝试将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文件夹中创建。

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

好吧,解决这个问题很棘手。我发现与Phpspreadsheet无关,而与Mpdf无关。

问题是文件“ imagick-3.4.0.tgz”文件许可权设置为只读。请注意,unlink无法在此特定文件上运行。这一直可以追溯到我第一次安装imagick库时。

解决方案是转到/tmp文件夹并手动删除imagick-3.4.0.tgz文件。在进行imagick安装时,实际上应该删除此文件夹。