Apache或php.ini配置,允许使用phpspreadsheet保存文件

时间:2018-07-15 00:59:52

标签: php html mysql

我一直在寻找信息,示例,文档...但是我的搜索失败了,因为我没有找到解决我的问题的任何方法:在上载最终版本之前,我使用XAMPP通过php和mysql设计了一个网页到我的服务器(这是为了执行功能测试)。我在XAMPP中实现了phpspreadsheet来生成xlsx,它工作正常,并在指定的本地驱动器位置中创建了对应的excel文件。但是.....当我将文件上传到服务器时,除了生成xlsx之外,其他所有功能都可以正常工作,我的意思是:excel文件未保存到服务器。服务器和xampp都具有相同版本的php,mysql,phpspreadsheet,我已经将文件夹的权限更改为777,以提供对脚本的完全访问权限以保存生成的预期文件,但是未生成文件或将文件保存到指定的位置php脚本。我已经尝试通过使用一个非常简单的测试php文件进行尝试,但它既没有保存excel文件,也没有显示错误,并且显然所有指令都正确执行了(仅在服务器中未生成xlsx,在Windows中通过使用xampp可以正常工作),我真的不知道是否有我想做的特殊配置,以便允许apache中的php保存文件。谢谢您的帮助。

测试1:仅在xampp中可以正常工作,在服务器中它不会产生错误,但不会将文件保存在任何地方。

<?php

require_once('vendor/autoload.php');

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\IOFactory;

$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load('template.xlsx');
$worksheet = $spreadsheet->getActiveSheet();
$worksheet->setCellValue('A1', 'Test text ok!!!');

$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, "Xlsx");

$writer->save("test.xlsx");

?>

测试2:在服务器和xampp上工作正常,但是生成Internet Explorer输出窗口的excel,而是将其保存到某个位置,可以,但是我不需要,我需要将文件存储(保存)在服务器中。

<?php

require_once('vendor/autoload.php');

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\IOFactory;

$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load('template.xlsx');
$worksheet = $spreadsheet->getActiveSheet();
$worksheet->setCellValue('A1', 'Test text ok!!!');

header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="test.xlsx" ');
header('Cache-Control: max-age=0');
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, "Xlsx");
$writer->save('php://output');
?>

根据上面显示的示例,我可以指出:指向\ PhpOffice \ PhpSpreadsheet ...的Phpspreadsheet的路径以及与指令和指令相关的路径在两种环境(xampp和lamp-server)上都可以正常工作,因为第二个示例可以,但是在第一个示例中,唯一不起作用的是save()函数。这就是为什么我认为该问题与Phpspreadsheet配置和/或php文件编码无关,而是与Apache或php用于保存文件的权限有关的原因。任何人都有一些想法,为什么脚本未在我的服务器中保存任何内容?预先谢谢你

0 个答案:

没有答案