首页 > 解决方案 > Apache 或 php.ini 配置以允许使用 phpspreadsheet 保存文件

问题描述

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

测试 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 上工作正常,但生成 excel 到 Internet Explorer 输出窗口,而不是将其保存到一个位置,没关系,但不是我需要的,我需要将文件存储(保存)在服务器中。

<?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 权限有关。任何人都有一些想法,为什么脚本没有在我的服务器中保存任何内容?先感谢您

标签: phphtmlmysql

解决方案


推荐阅读